我有一个可滚动的列表视图,每行有2个textViews,3个imageButtons和1个checkBox。
在listView的Header中,我在列的上方有一个删除按钮,其中包含listView的所有复选框。
当通过滚动listView随机选中2个或更多复选框时,我必须在listView中执行对象的删除操作,然后单击顶部的删除按钮。
但问题是我没有获得所选复选框的正确位置。此外,有时我得到正确的位置,但仍然要删除的对象是错误的。因此,整个功能可能会受到列表滚动性质的影响。
我应该在适配器类的持有者中占据该位置,还将已选中或未选中复选框的状态与我的对象绑定。
我应该使用checkBox.setOnCheckedChangeListener()还是deleteButton.setOnClickListener()。 如果我使用后一个,那么如何在按下删除按钮之前获取列表的所有相应对象,其复选框已被检查? 所有相关代码应放在哪里?在listAdapter类或活动中?
请帮我找到解决这个问题的方法..
答案 0 :(得分:0)
首先,在你的getView()方法中,你应该为每个checkBox设置一个特定的Tag。例如:check1.setTag(position)
那么你应该为你的checkBoxes实现OnCheckBoxChangeListener,为你的删除按钮实现OnClickListener。如您所知,onCheckBoxChangeListner的设置必须在getView()方法中。然后在onCheckedChanged()方法的chechBoxes的getTag()方法的帮助下,将其复选框检查的列表位置添加到ArrayList。
答案 1 :(得分:-1)
尝试getListView().setOnItemClickListener(new AdapterView.OnItemClickListener() {}