如何在listview的每一行中放置复选框?

时间:2011-11-21 13:25:44

标签: android listview

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

2 个答案:

答案 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获取详细的分步课程教程。