我有一个 ListView,我在其中动态添加行项。每行有一个孩子。现在我在这些孩子上设置点击监听器,在它们中它要求我将这些子项目保持为最终状态,它可以很好地与它们一起工作,并且可以这样做,因为我在每个点击监听器中创建一个类。
这里 isFree 是最后一个复选框。
isFree.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton arg0, boolean arg1) {
// TODO Auto-generated method stub
if (isFree.isChecked()){...}
}
});
但我不觉得这是一个好的编程习惯,我想使用一些函数来检测哪个孩子被点击,然后我应该能够使用 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()){...}
}
});
但是当我使用它时,焦点项目实际上返回列表视图,但我希望行中的焦点项目。