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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!