【问题标题】:How to detect on which row button in a listview user clicked如何检测列表视图用户单击了哪个行按钮
【发布时间】:2014-11-09 09:39:36
【问题描述】:

您好,我有一个listview,我在其中使用自定义适配器和行的自定义布局。我喜欢imageview,在它的顶部,然后在它的底部,左端有一个复选框,右端有一个按钮。

现在我想在checkbox 上应用选中的侦听器,然后在button 上单击侦听器。这是我正在做的事情

mybutton.setOnClickListener(new OnClickListener() {

   @Override
   public void onClick(View v) {
       // TODO Auto-generated method stub

   }
});

satView.setOnCheckedChangeListener(new OnCheckedChangeListener() {
   @Override
   public void onCheckedChanged(RadioGroup group, int checkedId) {
       if (isChecked){
           // perform logic
       }
   }
});

问题

所以在列表视图中,每一行都会有checkboxbuttton。我怎么知道用户点击了第二行或第三行 checkboxbutton

提前致谢。

【问题讨论】:

  • 黑带检查这个答案:stackoverflow.com/questions/17851687/…祝你好运!
  • @Souto 不,不想在列表视图上应用 itemclicklistener。取而代之的是,在每一行中有一个按钮和复选框之类的视图,我试图在它们上应用点击侦听器并检测用户点击了哪个行按钮

标签: android listview


【解决方案1】:

有一些方法可以做到这一点。我的首选方法是在您的自定义视图类中的getView 方法中将setOnCheckedChangeListener 添加到您的checkbox's 持有人。

您可以在getView 中使用position 参数来获取当前行位置。

【讨论】:

  • 如果我在最后滚动列表并点击第一行,那么我认为我不会获得点击复选框或按钮的位置。
  • @Williams 你会明白的 :) 因为 getView 被多次调用
  • 假设屏幕上有 9 行,getview 在这里调用了 9 次。当我点击第 7 个复选框侦听器时,getview 不会点击它然后我会得到什么位置值
  • 您的 onClick 中的位置将为 7,它将被触发。我在我的项目中使用了这种方法,列表视图很长并且工作正常。
  • @Williams 将代码移动到自定义适配器并不难,为什么不试试呢?如果仍然无法正常工作,请发布您的自定义适配器代码
猜你喜欢
  • 1970-01-01
  • 2014-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-15
相关资源
最近更新 更多