日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

RecyclerView 的 Item 的单击事件

發布時間:2025/3/15 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RecyclerView 的 Item 的单击事件 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

RecyclerView 的每個Item的點擊事件并沒有像 ListView 一樣封裝在組件中,需要 Item 的單擊事件時就需要自己去實現,在 Adapter 中為RecyclerView 添加單擊事件參考如下:

RecyclerView的使用方法請參考:RecyclerView的簡單使用

第一步:

在 RecyclerView 的 Adapyer 中定義單擊事件的回調接口:

/*** 定義 RecyclerView 選項單擊事件的回調接口*/ public interface OnItemClickListener{//參數(父組件,當前單擊的View,單擊的View的位置,數據)void onItemClick(RecyclerView parent,View view, int position, String data); }

第二步:

在RecyclerView的Adapyer中聲明該接口,并提供setter方法:

private OnItemClickListener onItemClickListener; public void setOnItemClickListener(OnItemClickListener onItemClickListener){this.onItemClickListener = onItemClickListener; }

第三步:

在RecyclerView的Adapyer類實現View.OnClickListener接口,并重寫onClick(View view)方法,然后設置給接口的事件監聽:

public class RvAdapter1 extends RecyclerView.Adapter<RvAdapter1.DataViewHolder> implements View.OnClickListener{...view.setOnClickListener(this);//設置監聽器...@Overridepublic void onClick(View view) {//根據RecyclerView獲得當前View的位置int position = recyclerView.getChildAdapterPosition(view);//程序執行到此,會去執行具體實現的onItemClick()方法if (onItemClickListener!=null){onItemClickListener.onItemClick(recyclerView,view,position,mList.get(position));}}... }

第四步:

在MainActivity中通過Adapter設置每個Item的單擊事件:

adapter.setOnItemClickListener(new RvAdapter1.OnItemClickListener() {@Overridepublic void onItemClick(RecyclerView parent, View view, int position, String data) {Toast.makeText(MainActivity.this, data, Toast.LENGTH_SHORT).show();} });

參考代碼

Adapter
/*** Created by jzman on 2017/5/13 0013.* RecycleView的Adapter*/ public class RvAdapter1 extends RecyclerView.Adapter<RvAdapter1.DataViewHolder> implements View.OnClickListener{private Context mContext;private RecyclerView recyclerView;private ArrayList<String> mList;public RvAdapter1() {}public RvAdapter1(Context mContext, ArrayList<String> mList) {this.mContext = mContext;this.mList = mList;}/*** 用于創建ViewHolder* @param parent* @param viewType* @return*/@Overridepublic DataViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {View view = LayoutInflater.from(mContext).inflate(R.layout.item,null);view.setOnClickListener(this);//使用代碼設置寬高(xml布局設置無效時)view.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT));DataViewHolder holder = new DataViewHolder(view);return holder;}/*** 綁定數據* @param holder* @param position*/@Overridepublic void onBindViewHolder(DataViewHolder holder, int position) {holder.tv_data.setText(mList.get(position));}/*** 選項總數* @return*/@Overridepublic int getItemCount() {return mList.size();}@Overridepublic void onClick(View view) {//根據RecyclerView獲得當前View的位置int position = recyclerView.getChildAdapterPosition(view);//程序執行到此,會去執行具體實現的onItemClick()方法if (onItemClickListener!=null){onItemClickListener.onItemClick(recyclerView,view,position,mList.get(position));}}/*** 創建ViewHolder*/public static class DataViewHolder extends RecyclerView.ViewHolder{TextView tv_data;public DataViewHolder(View itemView) {super(itemView);tv_data = (TextView) itemView.findViewById(R.id.tv_recycle);}}private OnItemClickListener onItemClickListener;public void setOnItemClickListener(OnItemClickListener onItemClickListener){this.onItemClickListener = onItemClickListener;}/*** 定義RecyclerView選項單擊事件的回調接口*/public interface OnItemClickListener{//參數(父組件,當前單擊的View,單擊的View的位置,數據)void onItemClick(RecyclerView parent,View view, int position, String data);}/*** 將RecycleView附加到Adapter上*/@Overridepublic void onAttachedToRecyclerView(RecyclerView recyclerView) {super.onAttachedToRecyclerView(recyclerView);this.recyclerView= recyclerView;}/*** 將RecycleView從Adapter解除*/@Overridepublic void onDetachedFromRecyclerView(RecyclerView recyclerView) {super.onDetachedFromRecyclerView(recyclerView);this.recyclerView = null;} }
MainActivity
/*** Created by jzman on 2017/5/13 0013.*/ public class MainActivity extends AppCompatActivity {private RecyclerView rv;RvAdapter1 adapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);rv = (RecyclerView) findViewById(R.id.rv);//設置布局管理器 // rv.setLayoutManager(new LinearLayoutManager(this));//線性rv.setLayoutManager(new GridLayoutManager(this,4));//線性 // rv.setLayoutManager(new StaggeredGridLayoutManager(4,StaggeredGridLayoutManager.VERTICAL));//線性adapter = new RvAdapter1(this,initData());adapter.setOnItemClickListener(new RvAdapter1.OnItemClickListener() {@Overridepublic void onItemClick(RecyclerView parent, View view, int position, String data) {Toast.makeText(MainActivity.this, data, Toast.LENGTH_SHORT).show();}});rv.setAdapter(adapter);}public static ArrayList<String> initData(){ArrayList<String> arrayList = new ArrayList<>();for (int i=0;i<50;i++){arrayList.add("第"+i+"條數據");}return arrayList;} }

顯示效果

可以關注微信公眾號:jzman-blog 獲取最新文章更新,歡迎一起交流學習!

轉載于:https://www.cnblogs.com/jzmanu/p/10284786.html

總結

以上是生活随笔為你收集整理的RecyclerView 的 Item 的单击事件的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。