pulltorefresh抽取基类

主页面 

package com.example.week03.frag;

import android.os.AsyncTask;
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 Frag02 extends BaseFragment {

    public String urlString = "http://api.expoon.com/AppNews/getNewsList/type/1/p/1";
    private PullToRefreshListView mPlv1;
    private MyAdapter myAdapter;
    private List<JsonBean.DataBean> list = new ArrayList<>();
    int page;
    //布局
    @Override
    public int layoutBu() {
        return R.layout.frag02;
    }
    //数据
    @Override
    public void initData(View view) {
        //找控件
        mPlv1 = view.findViewById(R.id.mPlv1);
        mPlv1.setMode(PullToRefreshBase.Mode.BOTH);
        //请求网络
        getData(page);
        //调用适配器
        myAdapter = new MyAdapter();
        mPlv1.setAdapter(myAdapter);
    }
    //监听时间
    @Override
    public void setListener() {
        mPlv1.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
                list.clear();
                page = 0;
                getData(page);
            }

            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {
                page++;
                getData(page);
            }
        });
    }
    //请求数据
    private void getData(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;
        }
    }
    //AsyncTask方法
    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();
            mPlv1.onRefreshComplete();
        }
    }
}

 需要被继承的类

package com.example.week03.frag;

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;

public abstract class BaseFragment extends Fragment {
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(layoutBu(),container,false);
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        initData(view);
        setListener();
    }
    //布局
    public abstract int layoutBu();
    //数据
    public abstract void initData(View view);
    //监听
    public abstract void setListener();
}

猜你喜欢

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