原創文章,如有轉載,請注明出處: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();//加載更多
}
}
}
});