OkHttp网络请求依赖:
compile 'com.squareup.okhttp3:okhttp:3.8.1'
RecyclerView依赖:
compile 'com.android.support:recyclerview-v7:26.0.0-alpha1'
XRecyclerView依赖:
compile 'com.jcodecraeer:xrecyclerview:1.3.2'
1.适配器中
public class Myadapter extends RecyclerView.Adapter { private View view; private Context mcontext; private ArrayList<News.DataBean> mlist=new ArrayList<>(); private OnItemClickListener mClickListener; public Myadapter(Context mcontext,ArrayList<News.DataBean> list) { this.mcontext = mcontext; this.mlist=list; } //找到需要导入的布局 @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { view = LayoutInflater.from(mcontext).inflate(R.layout.item, null); return new ViewHolder(view,mClickListener); } //加载相应的内容 @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { ViewHolder viewholder=(ViewHolder)holder; viewholder.age.setText(""+getItem(position).getUserAge()); viewholder.work.setText(""+getItem(position).getOccupation()); viewholder.introduction.setText(""+getItem(position).getIntroduction()); Glide.with(mcontext).load(getItem(position).getImg()).into(viewholder.ima); } //手写的重置数据的方法 public void setdata(ArrayList<News.DataBean> list){ if (list!=null&&list.size()>0){ mlist.addAll(list); } } //手写的获得视图的方法 public News.DataBean getItem(int position){ return mlist.get(position); }; @Override public int getItemCount() { return mlist.size(); } //定义的ViewHolder类继承RecyclerView.ViewHolder 并找到布局中的ID public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{ private OnItemClickListener mListener;// 声明自定义的接口 private TextView age,work,introduction; private ImageView ima; public ViewHolder(View itemView,OnItemClickListener listener) { super(itemView); mListener=listener; //给item设置点击事件 itemView.setOnClickListener(this); age=(TextView)itemView.findViewById(R.id.age); work=(TextView)itemView.findViewById(R.id.work); introduction=(TextView)itemView.findViewById(R.id.introduction); ima=(ImageView)itemView.findViewById(R.id.image); } @Override public void onClick(View v) { // getpostion()为Viewholder自带的一个方法,用来获取RecyclerView当前的位置,将此作为参数,传出去 mListener.onItemClick(v,getPosition()); } } //手写的一个接口 public interface OnItemClickListener { public void onItemClick(View view, int postion); } //自定义的方法 public void setOnItemClickListener(OnItemClickListener listener){ this.mClickListener=listener; } }
2.在需要设置点击事件的页面内
//Recyclerview的点击事件
md.setOnItemClickListener(new Myadapter.OnItemClickListener() { @Override public void onItemClick(View view, int postion) { Toast.makeText(MainActivity.this, mlist.get(postion).getIntroduction(), Toast.LENGTH_SHORT).show(); } });
----------------------------------------------------------------------------------------------------------------------------------------------------
加一个点,就是Recyclerview滑动到底部加载更多
注:a为链接URL最后的page数
initdata()为网络请求的方法
mrv为Recyclerview的变量名
//下拉加载更多 mrv.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { LinearLayoutManager lm = (LinearLayoutManager) mrv.getLayoutManager(); int totalItemCount = recyclerView.getAdapter().getItemCount(); int lastVisibleItemPosition = lm.findLastVisibleItemPosition(); int visibleItemCount = recyclerView.getChildCount(); if (newState==mrv.SCROLL_STATE_IDLE&& lastVisibleItemPosition == totalItemCount - 1 && visibleItemCount > 0){ //加载更多 a++; initdata(); } } });