原创文章,如有转载,请注明出处:http://blog.csdn.net/myth13141314/article/details/60866752
首先看看RecyclerView的简单使用
- 首先是常见的使用步骤
RecyclerView recyclerView = (RecyclerView) rootView.findViewById(R.id.rlv_recycleview);
//布局管理器,这里是GridView布局,列数为3列
GridLayoutManager layoutManager = new GridLayoutManager(getContext(), );
//或者也可以是LinearLayoutManager
//LinearLayoutManager layoutManager = new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false);
//设置布局管理器
recyclerView.setLayoutManager(layoutManager);
//设置适配器
recyclerView.setAdapter(mAdapter);
//添加分割线
recyclerView.addItemDecoration(new DividerItemDecoration(getContext(), DividerItemDecoration.VERTICAL));
- 然后是适配器的编写
private class myAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private List<String> names = new ArrayList<String>();
//构造函数
public myAdapter (List<String> names) {
this.names = names;
}
//view的布局类型
@Override
public int getItemViewType(int position) {
return ;//return your type
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position, List<Object> payloads) {
super.onBindViewHolder(holder, position, payloads);
}
//item数量
@Override
public int getItemCount() {
return strings.size();
}
@Override
public long getItemId(int position) { return position; }
//生成布局和Viewholder
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(getContext()).inflate(R.layout.cell_recycleview, null);
MyViewHolder myViewHolder = new MyViewHolder(view);
return myViewHolder;
}
//UI的更新,设置数据,点击监听等
@Override
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
String name = names.get(position);
((MyViewHolder) viewHolder).nameTextView.setText(name);
((MyViewHolder) viewHolder).rootView.
((MyViewHolder) viewHolder).rootView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//recrclerView 点击事件
}
});
}
//自定义ViewHolder
public class MyViewHolder extends RecyclerView.ViewHolder {
public View rootView;
public TextView nameTextView;
public MyViewHolder (View view) {
super(view);
rootView = view;
nameTextView = (TextView) view.findViewById(R.id.tv_name);
}
}
}
判断滚动到底部,需要为recyclerview添加滚动监听
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
//第一个可见item的位置
int firstVisibleItem =((LinearLayoutManager)recyclerView.getLayoutManager()).findFirstVisibleItemPosition();
//当前可见的item数
int visibleItemCount = ((LinearLayoutManager)recyclerView.getLayoutManager()).getChildCount();
//总共的item数
int totalItemCount = ((LinearLayoutManager)recyclerView.getLayoutManager()).getItemCount();
if (firstVisibleItem == ) {//滚动到顶部
isTop = true;
}else {
isTop = false;
}
// 满足下列条件后即滚动到底部,如有需要可开始加载下一页
if (firstVisibleItem + visibleItemCount > totalItemCount - ) {
if (current_page>= && total_page>current_page) {//根据实际,再加一些加载更多的条件判断
loadMoreData();//加载更多
}
}
}
});