异步解析 HttpURLConnection方式在listview展示

本文介绍了一个名为Fragment1的Android组件,该组件通过ViewPager展示轮播图片,并使用异步任务加载远程数据来填充ListView。Fragment1实现了轮播效果的自动切换,并能够响应ListView项点击事件,显示对应的对话框。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package moni1zhoukao.bwei.com.moni1zhoukao;

import android.annotation.SuppressLint;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.Toast;

import com.google.gson.Gson;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.reflect.Array;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

/**
 * Created by Jack Lee on 2018/7/7.
 */

public class Fragment1 extends Fragment {

    private ViewPager view_pager2;
    private ListView list_view;
    private MyPagerAdapter myPagerAdapter;
    @SuppressLint("HandlerLeak")
    private Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            if (msg.what==0){
                int i= view_pager2.getCurrentItem();
                i++;
                view_pager2.setCurrentItem(i);
                handler.sendEmptyMessageDelayed(0,1000);

            }
        }
    };
    private ArrayList<String> list;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View inflate = inflater.inflate(R.layout.fragment_layout1, container, false);
        initView(inflate);
        return inflate;
    }

    private void initView(View inflate) {
        view_pager2 = inflate.findViewById(R.id.view_pager2);
        list_view = inflate.findViewById(R.id.list_view);

    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);

        //创建集合
        List<Integer> list = new ArrayList<Integer>();

        //把图片添加到集合中
        list.add(R.drawable.a3);
        list.add(R.drawable.a4);
        list.add(R.drawable.a5);
        list.add(R.drawable.a6);
        //创建适配器
        myPagerAdapter = new MyPagerAdapter(getActivity(),list);
        view_pager2.setAdapter(myPagerAdapter);

        view_pager2.setCurrentItem(list.size()*1000);

        handler.sendEmptyMessageDelayed(0,1000);
        //创建异步
        TwoAsyncTack asyncTack = new TwoAsyncTack();

        asyncTack.execute();
    }


    private class TwoAsyncTack extends AsyncTask<String,Void, String>{
        @Override
        protected String doInBackground(String... strings) {
            //定义网络地址
            String path = "http://www.yulin520.com/a2a/forum/allTypeList?sign=376C5BFC22179A1B8FF3A86D4588B29F&pageSize=10&ts=1877785007&forumType=0&page=1\n";
            //封装网络地址
            try {
                URL url = new URL(path);
                //打开链接
                 HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                 //设置请求格式
                connection.setRequestMethod("GET");
                //从服务器中获取输入流
                InputStream inputStream = connection.getInputStream();
                //设置其编码格式
                InputStreamReader inputStreamReader = new InputStreamReader(inputStream,"utf-8");
                //字符读取缓冲流
                BufferedReader reader = new BufferedReader(inputStreamReader);
                String str="";
                StringBuilder builder = new StringBuilder();
                while ((str=reader.readLine())!=null){

                    builder.append(str);

                }
                reader.close();
                Log.i("xxx",builder.toString());
                return builder.toString();
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            Gson gson = new Gson();

            Datainof data = gson.fromJson(s, Datainof.class);
            List<Datainof.DataBean> data1 = data.getData();
            //创建集合
             list = new ArrayList<String>();
            int i = 0;
            for (i = 0; i < data1.size(); i++){
               list.add(data1.get(i).getTitle());
                //Log.i("xxx", data1.get(i).getTitle());
            }
              //创建适配器
           MyAdapter myAdapter = new MyAdapter(getContext(),list);
            list_view.setAdapter(myAdapter);

            list_view.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                    createAdiog(i);
                }


            });

        }

        private void createAdiog(final int i) {
            AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
            builder.setTitle("信息");
            builder.setMessage(list.get(i).toString());
            builder.setPositiveButton("吐司", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int s) {

                    Toast.makeText(getContext(),list.get(i).toString(),Toast.LENGTH_SHORT).show();
                }
            });
            builder.setNegativeButton("取消",null);
            builder.show();

        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值