在TabLayout里面写pulltorefresh

package com.example.week03.tab;

import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;

import com.example.week03.NetWorkUtils;
import com.example.week03.R;
import com.example.week03.bean.JsonBean;
import com.google.gson.Gson;
import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshListView;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;

import java.util.ArrayList;
import java.util.List;

public class TabOne extends Fragment {
    public String urlString = "http://api.expoon.com/AppNews/getNewsList/type/1/p/1";
    private PullToRefreshListView plv;
    private MyAdapter myAdapter;
    private List<JsonBean.DataBean> list = new ArrayList<>();
    int page = 0;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.tabone, container, false);
        //找控件
        plv = view.findViewById(R.id.plv);
        plv.setMode(PullToRefreshBase.Mode.BOTH);
        //调用适配器
        myAdapter = new MyAdapter();
        plv.setAdapter(myAdapter);
        //请求网络
        initData(page);
        plv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
                list.clear();
                page = 0;
                initData(page);
            }

            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
                page++;
                initData(page);
            }
        });
        return view;
    }

    private void initData(int page) {
        String url = urlString + page;
        new MAsync().execute(url);
    }

    private class MyAdapter extends BaseAdapter {

        private ImageLoader instance;

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

        @Override
        public Object getItem(int position) {
            return null;
        }

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

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ViewHolder holder = new ViewHolder();
            if(convertView == null){
                convertView = View.inflate(getActivity(),R.layout.item01,null);

                holder.mTv1 = convertView.findViewById(R.id.mTv1);
                holder.mTv2 = convertView.findViewById(R.id.mTv2);
                holder.mTv3 = convertView.findViewById(R.id.mTv3);
                holder.image = convertView.findViewById(R.id.image);

                convertView.setTag(holder);
            }else{
                holder = (ViewHolder) convertView.getTag();
            }

            holder.mTv1.setText(list.get(position).getNews_id());
            holder.mTv2.setText(list.get(position).getNews_summary());
            holder.mTv3.setText(list.get(position).getNews_title());

            instance = ImageLoader.getInstance();
            DisplayImageOptions displayImageOptions = new DisplayImageOptions.Builder()
                    .displayer(new RoundedBitmapDisplayer(360))
                    .build();
            instance.displayImage(list.get(position).getPic_url(),holder.image,displayImageOptions);
            return convertView;
        }
        class ViewHolder{
            TextView mTv1,mTv2,mTv3;
            ImageView image;
        }
    }

    private class MAsync extends AsyncTask<String,Void,String> {
        @Override
        protected String doInBackground(String... strings) {
            return NetWorkUtils.getNetJson(strings[0]);
        }

        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            Gson gson = new Gson();
            JsonBean jsonBean = gson.fromJson(s, JsonBean.class);
            List<JsonBean.DataBean> data = jsonBean.getData();
            list.addAll(data);

            //刷新适配器
            myAdapter.notifyDataSetChanged();
            plv.onRefreshComplete();
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_42634876/article/details/86162952