gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 11:14:17 24 4
gpt4 key购买 nike

我有一个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com