android - 如何获得 ListView 的焦点子项?

标签 android listview android-listview

我有一个 ListView,我可以在其中动态添加行项目。每行都有一个 child 。现在我在这些子项上设置点击监听器,在它们中它要求我将这些子项保留为最终状态,它与它们一起工作正常并且可以这样做,因为我在每个点击监听器中创建一个类。

这里的 isFree 是最后一个复选框。

isFree.setOnCheckedChangeListener(new OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
        // TODO Auto-generated method stub
        if (isFree.isChecked()){...}
    }
});

但我不觉得这是一个好的编程习惯,我想使用一些函数来检测哪个 child 被点击,然后我应该能够使用 getParent 访问它的行,然后使用 getChildAt(index) 访问它的兄弟项目 所以,我用了这个:

isFree.setOnCheckedChangeListener(new OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
        // TODO Auto-generated method stub
        CheckBox tv=(CheckBox) getCurrentFocus();
        TableRow row = (TableRow)tv.getParent();
        TextView tv1=(TextView) row.getChildAt(5);
        if (tv.isChecked()){...}
    }
});

但是当我使用它时,焦点项目实际上返回 ListView ,但我想要行中的焦点项目。

最佳答案

您可以使用 onItemClickListener 获取 listview 的哪个子项被单击,但是如果您想对具有某些复选框或其他可单击 View 的行执行某些操作,并且您希望对这些单击执行某些操作,那么我认为您有在这些 View 本身上使用点击监听器。

但是如果你想在点击这些单独的 View 时获取列表项行,你可以使用 View 类的 setTag 方法来存储索引,然后在你的点击监听器上从该索引获取行项。

public view getView(int position, View convertView, ..) {
  ....
  ....
  ....
  // your code
  convertView.setTag(position);
  return convertView;
}

isFree.setOnCheckedChangeListener(new OnCheckedChangeListener() {
    @Override
    public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
        // TODO Auto-generated method stub
        if (arg0.isChecked()){
            int index = arg0.getTag();
            View v = listview.getItemAtPosition(index);
            // or  get the adapter get data list from it and then index it.

        }
    }
});

请注意:我没有在 oncheckedchange 方法中使用 final free。

关于android - 如何获得 ListView 的焦点子项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19153819/

相关文章:

Android ViewPageAdapter,每个选项卡都有一个单独的后台堆栈

android - imageview 不会在触摸事件 android 上移动

java - android ListView 中的 Font Awesome 不起作用

java - Android,从第三个 Activity 中获取结果

android - 拖放没有库的ListView

android - 获取应用程序图标 android 8 时出现异常,适用于 android 7

Android Intent 按钮上市

java - 使用自定义适配器将项目动态添加到 ListView 中的问题

android - 在对话框内的 ListView 上执行 onclick 操作

android - 如何切换 Android ListView 空文本?