Recycleview的上拉刷新与下拉加载

来源:互联网 发布:php exec 返回127 编辑:程序博客网 时间:2024/05/17 02:34
public class otherActvity extends AppCompatActivity {    private RecyclerView mRecycle;    private SwipeRefreshLayout mSw;    private Handler handler =new Handler();    private Mrecycleviewadpter mrecycleviewadpter;    private LinearLayoutManager linearLayoutManager;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_other_actvity);        initView();        getdata();    }        /*                网络请求         */    private void getdata() {        okhttp ok = new okhttp();        String str = "http://120.27.23.105/product/getCatagory";        ok.Call(str, null, bean.class, new NetDataCallBack() {            @Override            public void callback(Object o) {                bean  b = (bean) o;                List<bean.DataBean> data = b.getData();                Log.e("123",data.size()+"");                recyc(data);            }            @Override            public void error(String s, int code) {            }        });    }    private void recyc(List<bean.DataBean> data) {        mrecycleviewadpter = new Mrecycleviewadpter(otherActvity.this, data);        mRecycle.setAdapter(mrecycleviewadpter);    }    private void initView() {        mRecycle = (RecyclerView) findViewById(R.id.recycle);        mSw = (SwipeRefreshLayout) findViewById(R.id.sw);        linearLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);        mRecycle.setLayoutManager(linearLayoutManager);        /*                上拉刷新         */        mSw.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {            @Override                    public void onRefresh() {                handler.postDelayed(new Runnable() {                    @Override                    public void run() {                        List<bean.DataBean> newDatas = new ArrayList<bean.DataBean>();                        for (int i = 0; i <5 ; i++) {                            bean.DataBean bb = new bean.DataBean();                            bb.setName("这是我刷新的"+i);                            newDatas.add(bb);                        }                        mrecycleviewadpter.additem(newDatas);                        mSw.setRefreshing(false);                        Toast.makeText(otherActvity.this, "更新了五条数据...", Toast.LENGTH_SHORT).show();                    }                },5000);                    }        });        /*                下拉加载         */        mRecycle.setOnScrollListener(new RecyclerView.OnScrollListener() {            private int lastVisibleItemPosition;            @Override            public void onScrollStateChanged(RecyclerView recyclerView, int newState) {                super.onScrollStateChanged(recyclerView, newState);                if (newState == RecyclerView.SCROLL_STATE_IDLE && lastVisibleItemPosition+1== mrecycleviewadpter.getItemCount()){                    handler.postDelayed(new Runnable() {                        @Override                        public void run() {                            List<bean.DataBean> newDatas = new ArrayList<bean.DataBean>();                            for (int i = 0; i <5 ; i++) {                                bean.DataBean bb = new bean.DataBean();                                bb.setName("这是我添加的"+i);                                newDatas.add(bb);                            }                            mrecycleviewadpter.addMoreItem(newDatas);                        }                    },5000);                }            }            @Override            public void onScrolled(RecyclerView recyclerView, int dx, int dy) {                super.onScrolled(recyclerView, dx, dy);                lastVisibleItemPosition = linearLayoutManager.findLastVisibleItemPosition();            }        });    }}
  接下来 看下适配器
public class Mrecycleviewadpter extends RecyclerView.Adapter<Mrecycleviewadpter.viewhoder> {   private Context context;    List<bean.DataBean> data;    public Mrecycleviewadpter(Context context, List<bean.DataBean> data) {        this.context = context;        this.data = data;    }    @Override    public viewhoder onCreateViewHolder(ViewGroup parent, int viewType) {        View view = View.inflate(context, R.layout.reecycle,null);        viewhoder vh = new viewhoder(view);        return vh;    }    @Override    public void onBindViewHolder(viewhoder holder, int position) {        holder.textView.setText(data.get(position).getName());    }    @Override    public int getItemCount() {        return data.size();    }    class viewhoder extends RecyclerView.ViewHolder{        TextView textView;        public viewhoder(View itemView) {            super(itemView);            textView = itemView.findViewById(R.id.name);        }    }    public  void additem (List<bean.DataBean> newdatda){        newdatda.addAll(data);        data.removeAll(data);        data.addAll(newdatda);        notifyDataSetChanged();    }    public void addMoreItem(List<bean.DataBean> newDatas) {        data.addAll(newDatas);        notifyDataSetChanged();    }}

阅读全文
0 0
原创粉丝点击