我有一个listview,其中我从基本适配器获取值。我想要的是点击按钮,其属性不可见的复选框变得可见并出现在列表视图的每一行的前面。我是能够解决这个问题,但只在几行前面的复选框。我厌倦了搜索这个东西。我觉得问题在于获取列表视图的某个地方,它只获取当时在屏幕上可见的行的视图。我在这个领域很新,我无法得到我确切的问题。任何帮助都会非常明显。
///复选框出现在四行中,然后在两行间隙之后再次出现等等... ///
button.setOnClickListener(this);
public void onClick(View v) {
// TODO Auto-generated method stub
//relative layout in which button is declared
RelativeLayout relative=(RelativeLayout)v.getParent();
//listview is first child of relative..
ListView lv=(ListView)relative.getChildAt(1);
for(int i=0;i<lv.getChildCount();i++){
////////relative layout in whichcheckbox is declared
RelativeLayout newrelative=(RelativeLayout)lv.getChildAt(i);
//checkbox is forth child of newrelative..
CheckBox cb=(CheckBox)newrelative.getChildAt(4);
cb.setVisibility(0);
}
}//method
答案 0 :(得分:2)
ListView
小部件会回收其视图,这就是您在向上和向下滚动时看到更改的原因。
要解决它,你应该覆盖你的列表适配器,并在其中决定是否显示Checkbox
。
最好的方法是将这些数据保存在数据库中。
然后在getView方法中添加 -
if (*i should see a checkbox next to this item*) {
checkbox.setVisibility(View.VISIBLE);
} else {
checkbox.setVisibility(View.INVISIBLE);
}
“其他”非常重要,否则它会重复使用一个您不希望拥有enter code here
的项目的可见Checkbox
复选框。
答案 1 :(得分:0)
您可以在.. checkbox listview tutorial获取详细的分步课程教程。