使用 listview/gridview 时,我应该在哪里设置点击监听器?

Where should I set up click listeners when working with listview/gridview?

当我使用 listview、recyclerview、gridview 等视图列表时,我应该在哪里声明项目点击侦听器?

例如,我有一个 GridView 和一个扩展 ArrayAdapter 的自定义适配器 class。有人可以告诉我以下两种情况中哪一种是一般使用点击侦听器的更好方法吗?

  1. 在 activity/fragment 中,GridView 设置如下:

    GridView gridView = findViewById(R.id.grid_view); CustomAdapter adapter = new CustomAdapter(this); gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(parameters) { } }); gridView.setAdapter(adapter);

  2. 在 CustomAdapter 的 getView(int position, View convertView, ViewGroup parent) 方法中,如:

    convertView.setOnClickListener(new OnClickListener() ... );

感谢您的帮助!

这取决于你的需要,如果你想考虑整个 grid item 的单一,那么使用第一种方法将 onItemClickListener 设置为 grid 但如果你的 grid必须响应其中的单个视图点击,然后采用第二种方法响应适配器中的点击

这取决于你想要的方式,比如如果你想用你的项目点击监听器访问一些 activity 变量那么最好先写一个,如果你想单行点击事件那么肯定是第一个一个更好但是如果你需要更多的子视图的点击事件是列表项那么你需要在适配器内部定义,

比如我有一个带有加号和减号按钮的列表项,而且我想在点击完整项时重定向到详细信息屏幕,那么我会在适配器内部定义点击事件会更好。