RecyclerView的使用
1,java
RecyclerView mRecyclerView;
List<> mList = new ArrayList();
public void initWidget() {
setContentView(R.layout.activity_main);
VarietyAdapter varietyAdapter = new VarietyAdapter(mList);
mRecyclerView = (RecyclerView) findViewById(R.id.variety_selection_recyclerView);
//瀑布流,列數是5
StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(5, StaggeredGridLayoutManager.VERTICAL);
//線性
//LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
//卡片
//GridLayoutManager mGridLayoutManager = new GridLayoutManager(this,5);
mRecyclerView.setLayoutManager(staggeredGridLayoutManager);
//設置recycler擁有固定的大小,提高展示效率
mRecyclerView.setHasFixedSize(true);
//設置默認的動畫,在移除和添加的效果下展現,現在github上可以找到許多拓展,有興趣的可以找找
//admBinding.modulationRecyclerView.setItemAnimator(new DefaultItemAnimator());
mRecyclerView.setAdapter(varietyAdapter);
//點擊事件需要自己寫在Adapter里
varietyAdapter.setOnItemClickListener(this);
//刷新列表-數據變更時
varietyAdapter.refresh(mList);
}
2,適配器Adapter
public class VarietyAdapter extends RecyclerView.Adapter implements View.OnClickListener,View.OnLongClickListener{
// private TextView name;
List<String> mList;
public VarietyAdapter(List<String> list) {
mList = list;
}
class ViewHolder extends RecyclerView.ViewHolder{
private TextView name;
public ViewHolder(View itemView) {
super(itemView);
name = (TextView) itemView.findViewById(R.id.item_text);
}
public TextView getName() {
return name;
}
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item,null);
ViewHolder viewHolder = new ViewHolder(view);
//用于OnItemClickLitener的點擊事件
view.setOnClickListener(this);
view.setOnLongClickListener(this);
return viewHolder;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
ViewHolder vh = (ViewHolder) holder;
vh.getName().setText(mList.get(position));
//用于OnItemClicklistener的position 標記
vh.itemView.setTag(position);
}
@Override
public int getItemCount() {
return mList.size();
}
//刷新數據- - -添加
public void addItem(List<String> list,int postion){
mList = list;
//新添加一條
notifyItemInserted(postion);
}
//刷新數據- - -刪除
public void deleteItem(List<String> list,int postion){
mList = list;
//刪除一條
notifyItemRemoved(postion);
}
//刷新數據- - -全部,一般用這個就好
public void refresh(List<Variety> list) {
mVarietyList = list;
notifyDataSetChanged();//刷新全部數據
}
//
/**
* 定義item點擊事件||||
* */
//子布局的點擊事件
public void onClick(View v) {
if (mOnItemClickListener != null) {
//注意這里使用getTag方法獲取數據
mOnItemClickListener.onItemClick(v, Integer.parseInt(v.getTag().toString()));
}
}
//
private OnRecyclerViewItemClickListener mOnItemClickListener = null;
//define interface
public static interface OnRecyclerViewItemClickListener {
void onItemClick(View view, int position);
}
public void setOnItemClickListener(OnRecyclerViewItemClickListener listener) {
this.mOnItemClickListener = listener;
}
/**長按點擊事件*/
@Override
public boolean onLongClick(View v) {
if (mOnItemLongClickListener != null) {
//注意這里使用getTag方法獲取數據
mOnItemLongClickListener.onItemLongClick(v, Integer.parseInt(v.getTag().toString()));
}
return false;
}
private OnRecyclerViewItemLongClickListener mOnItemLongClickListener = null;
public static interface OnRecyclerViewItemLongClickListener {
void onItemLongClick(View view, int position);
}
public void setOnItemLongClickListener(OnRecyclerViewItemLongClickListener listener) {
this.mOnItemLongClickListener = listener;
}
}
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!