xrecyclerview 实现下拉刷新下拉加载

来源:互联网 发布:js equals方法 编辑:程序博客网 时间:2024/06/05 16:55
xrecyclerview的
compile 'com.jcodecraeer:xrecyclerview:1.3.2'

因为使用的是OkHttp请求数据 现在可以更换使用retrofit 请求数据 
public class MainActivity extends AppCompatActivity {    private XRecyclerView recyclerView;    private MyAdapter adapter;    ArrayList<SuperClass.NewslistBean> list;    ArrayList<SuperClass.NewslistBean> newlist;    String url = "https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=20&page=1";    String url1 = "https://api.tianapi.com/wxnew/?key=8d6e3228d25298f13af4fc40ce6c9679&num=20&page =";    int page =1;        @Override        protected void onCreate(Bundle savedInstanceState) {            super.onCreate(savedInstanceState);            setContentView(R.layout.activity_main);            recyclerView = (XRecyclerView) findViewById(R.id.show_recycler);            recyclerView.setLayoutManager(new LinearLayoutManager(this));            recyclerView.setPullRefreshEnabled(true);            recyclerView.setLoadingMoreEnabled(true);            recyclerView.setLoadingListener(new XRecyclerView.LoadingListener() {                @Override                public void onRefresh() {                    Toast.makeText(MainActivity.this,"刷新....",Toast.LENGTH_SHORT).show();                    list.clear();                    page=1;                    inData();                    recyclerView.refreshComplete();                }                @Override                public void onLoadMore() {                    Toast.makeText(MainActivity.this,"加载....",Toast.LENGTH_SHORT).show();                    addData();//                ArrayList<SuperClass.NewslistBean> mylist = addData();//                Toast.makeText(ShowActivity.this,mylist.toString(),Toast.LENGTH_SHORT).show();//                list.addAll(mylist);//                adapter.notifyDataSetChanged();                    recyclerView.refreshComplete();                }            });            inData();        }        public void addData(){            // Toast.makeText(ShowActivity.this, url1+page, Toast.LENGTH_SHORT).show();            page++;            String url3 = url1+page;            newlist = new ArrayList<SuperClass.NewslistBean>();            OkHttp3Utils.getInstance().doGet(url3, new GsonObjectCallback<SuperClass>() {                @Override                public void onUi(SuperClass superClass) {                    //Toast.makeText(ShowActivity.this, superClass.getNewslist().toString(), Toast.LENGTH_SHORT).show();                    newlist = (ArrayList<SuperClass.NewslistBean>) superClass.getNewslist();                    list.addAll(superClass.getNewslist());                    adapter.notifyDataSetChanged();                }                @Override                public void onFailed(okhttp3.Call call, IOException e) {                }            });//        return newlist;        }        public void inData(){            list = new ArrayList<>();            OkHttp3Utils.getInstance().doGet(url, new GsonObjectCallback<SuperClass>() {                @Override                public void onUi(SuperClass superClass) {                    list = (ArrayList<SuperClass.NewslistBean>) superClass.getNewslist();                    //Toast.makeText(getActivity(), list.toString(), Toast.LENGTH_SHORT).show();                    adapter = new MyAdapter(MainActivity.this,list);                    recyclerView.setAdapter(adapter);                }                @Override                public void onFailed(okhttp3.Call call, IOException e) {                }            });        }    }
rxadapter适配器的内容
public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {    Context context;    ArrayList<SuperClass.NewslistBean> list;    public MyAdapter(Context context, ArrayList<SuperClass.NewslistBean> list) {        this.context = context;        this.list = list;    }    private enum Type{        Type_one,Type_two    }    @Override    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        if(viewType == Type.Type_one.ordinal()){            View view = LayoutInflater.from(context).inflate(R.layout.item_recyclera,null);            MyShowViewHolderA viewholder = new MyShowViewHolderA(view);            return viewholder;        }else if(viewType == Type.Type_two.ordinal()){            View view = LayoutInflater.from(context).inflate(R.layout.item_recyclerb,null);            MyShowViewHolderB viewholder = new MyShowViewHolderB(view);            return viewholder;        }        return null;    }    @Override    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {        if(holder instanceof MyShowViewHolderA){            ((MyShowViewHolderA)holder).texta.setText(list.get(position).getTitle());        }else if(holder instanceof MyShowViewHolderB){            String bitUrl = list.get(position).getPicUrl();            ImageLoader loader = ImageLoader.getInstance();            loader.displayImage(bitUrl, ((MyShowViewHolderB)holder).head);            ((MyShowViewHolderB)holder).textb.setText(list.get(position).getTitle());        }    }    @Override    public int getItemCount() {        return list.size();    }    @Override    public int getItemViewType(int position) {        if(position%2==0) {            return Type.Type_one.ordinal();        }else{            return Type.Type_two.ordinal();        }    }    class MyShowViewHolderA extends RecyclerView.ViewHolder{        TextView texta;        public MyShowViewHolderA(View itemView) {            super(itemView);            texta = (TextView) itemView.findViewById(R.id.recyclera_text);        }    }    class MyShowViewHolderB extends RecyclerView.ViewHolder{        TextView textb;        ImageView head;        public MyShowViewHolderB(View itemView) {            super(itemView);            textb = (TextView) itemView.findViewById(R.id.recyclerb_text);            head = (ImageView) itemView.findViewById(R.id.recyclerb_head);        }    }}