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

时间:2018-01-19 03:57:21

标签: android listview gridview android-recyclerview adapter

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

例如,我有一个GridView和一个扩展ArrayAdapter的自定义适配器类。有人可以告诉我,以下两种情况中哪一种更适合使用点击监听器?

  1. 在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() ... );

  3. 感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

这取决于您的需求,如果您想考虑单个整个onItemClickListener,那么请先将grid设置为grid,但如果您的public function account_from(){ return $this->hasOne('App\Transactions','id', 'account_from_id'); } public function account_to(){ $this->hasOne('App\Transactions','id', 'account_to_id'); } 必须响应其中的单个视图点击,然后采取第二种方法响应点击适配器

答案 1 :(得分:0)

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

就像我有一个加号和减号按钮的列表项一样,我想在完整项目点击时重定向到详细信息屏幕然后我会在适配器内定义点击事件会更好。