XListView请求网络数据

XListView请求网络数据的使用;

导入xListview

Activity实现 XListView.IXListViewListener
重写 onRefresh  ,onLoad 方法
public class MainFragment2 extends Fragment implements XListView.IXListViewListener{

    private String urlString = "http://api.expoon.com/AppNews/getNewsList/type/1/p/";
    private int page;
    private XListView xlist_view;
    private MyAdapter myAdapter;
    private List<Product.DataBean> list;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.mainfragment2_layout, container, false);
        xlist_view = view.findViewById(R.id.xlist_view);
        list = new ArrayList<Product.DataBean>();
        return view;
    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        myAdapter = new MyAdapter();
        xlist_view.setAdapter(myAdapter);

        getNetData(0);
        //设置xListView可以上拉加载更多功能
        xlist_view.setPullLoadEnable(true);
        //设置接口的实现类;this指的是MainActivity自己;类似button的点击事件;
        xlist_view.setXListViewListener(this);
    }

    /**
     * 下拉刷新功能:请求服务器最新的数据
     */
    @Override
    public void onRefresh() {
        //清空集合
        //重新请求数据的第一页
        //更新适配器
        list.clear();
        getNetData(0);
    }
    /**
     * 上拉加载更多的功能,
     */
    @Override
    public void onLoadMore() {
        //请求新的数据,把数据放入到大集合中
        //更新适配器
        //停止刷新ui
        page++;
        Log.e("ck",page+"--------------------");
        getNetData(page);
    }

    private void getNetData(int page){
        int netType = NetTypeUtil.getNetType(getActivity());
        if (netType!=-1){
            new MyAsyncTask().execute(urlString+page);
        } else {
            Toast.makeText(getActivity(),"请检查网络",Toast.LENGTH_LONG).show();
        }
    }

    class MyAsyncTask extends AsyncTask<String,Void,String> {

        @Override
        protected String doInBackground(String... strings) {
            String netJson = NetUtil.getNetJson(strings[0]);
            return netJson;
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            Gson gson = new Gson();
            Product product = gson.fromJson(s, Product.class);
            list.addAll(product.getData());
            myAdapter.notifyDataSetChanged();
            //让刷新头和刷新底部 消失;
            uiComplete();
        }
    }

    private void uiComplete(){
        xlist_view.stopRefresh();//让下拉刷新头消失
        xlist_view.stopLoadMore();//让上拉加载的ui消失
        xlist_view.setRefreshTime("刚刚"+System.currentTimeMillis());
    }

    public class MyAdapter extends BaseAdapter {
        private ImageLoader imageLoaderInstance=ImageLoader.getInstance();

        /**
         * @return 共有多少种条目类型
         */
        @Override
        public int getViewTypeCount() {
            return 2;
        }
        /**
         * 奇数条 返回 文字
         * 偶数条 返回 图片加文字
         * 获取条目视图类型
         * @return 0代表偶数条 ,  1代表技术条;
         * 返回值的int 值 只能从0开始排  0 ,1,3,4,5
         */
        @Override
        public int getItemViewType(int position) {
            return position % 2;//对2取余,返回值是0 或者1
        }

        @Override
        public int getCount() {
            return list.size();
        }

        @Override
        public Object getItem(int i) {
            return list.get(i);
        }

        @Override
        public long getItemId(int i) {
            return i;
        }

        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {
            int itemViewType = getItemViewType(i);
            switch (itemViewType){
                case 0://偶数条目 返回文字+图片条目;
                    ViewHolder1 holder1;
                    if (view==null){
                        view=View.inflate(getActivity(), R.layout.item1_layout,null);
                        holder1=new ViewHolder1();
                        holder1.img=view.findViewById(R.id.img);
                        holder1.text1=view.findViewById(R.id.text1);
                        holder1.text2=view.findViewById(R.id.text2);
                        holder1.text3=view.findViewById(R.id.text3);
                        view.setTag(holder1);
                    } else {
                        holder1= (ViewHolder1) view.getTag();
                    }
                    imageLoaderInstance.displayImage(list.get(i).getPic_url(), holder1.img);
                    holder1.text1.setText(list.get(i).getPic_url());
                    holder1.text2.setText(list.get(i).getNews_title());
                    holder1.text3.setText(list.get(i).getNews_summary());
                    break;
                case 1:// 奇数条,只返回文字条目
                    ViewHolder2 holder2;
                    if (view==null){
                        view=View.inflate(getActivity(), R.layout.item2_layout,null);
                        holder2=new ViewHolder2();
                        holder2.text4=view.findViewById(R.id.text4);
                        holder2.text5=view.findViewById(R.id.text5);
                        view.setTag(holder2);
                    } else {
                        holder2= (ViewHolder2) view.getTag();
                    }
                    holder2.text4.setText(list.get(i).getNews_title());
                    holder2.text5.setText(list.get(i).getNews_summary());
                    break;
            }
            return view;
        }

        class ViewHolder1{
            private ImageView img;
            private TextView text1;
            private TextView text2;
            private TextView text3;
        }
        class ViewHolder2{
            private TextView text4;
            private TextView text5;
        }
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值