我认为您在选择多个列表项或知道选择了哪个活动列表项或未选择哪个活动列表项时遇到了问题。
所有这些事情都可以通过创建一个包含两个自定义字段的 getter setter 类来轻松完成,一个是选择的字符串,一个是未选择的所有其他 getter setter 对象。
然后使用像这样的 getter setter 数据类型创建一个自定义数组列表
ArrayList<MyGetterSetter> listData = new ArrayList<MyGetterSetter> ();
和getter setter类:
Class MyGetterSetter
{
int selected , unselected ;
public int getSelected() {
return selected;
}
public void setSelected(int selected) {
this.selected = selected;
}
public int getUnselected() {
return unselected;
}
public void setUnselected(int unselected) {
this.unselected = unselected;
}
}
然后设置默认值 selected =0;并且未选中=1;
在您将实时数据添加到 getter setter 时,通常是在 json 解析或从数据库中获取数据并将其插入到 arraylist 期间。
然后使用您创建的自定义数组列表设置您的列表适配器以显示视图数据。
MyGetterSetter model = listData.get(position);
if(model.getSelected==1)
{
yourCheckbox.setSelected(true);
}
else
{
yourCheckbox.setSelected(false);
}
//同样在adapter中设置checkbox/button点击监听器..
yourCheckbox.setonClickListener(new View.onClickListener
{
public void onClick(View view)
{
if(model.getSelected==1)
{
yourCheckbox.setSelected(false);
model.setSelected=0;
model.setUnSelected=1;
}
else
{
yourCheckbox.setSelected(true);
model.setSelected=1;
model.setUnSelected=0;
}
}
然后在每个项目上单击活动列表项单击侦听器更改 selected =1 if selected 或 unselected = 0 的值;
如果用户选择了列表项
设置 selected=0 和 unselected = 1;
如果用户未选择。
然后在列表正下方在该按钮上附加一个按钮单击循环整个适配器数据和/或数组列表数据并检查状态和位置。
如果找到选择=1
然后计算该特定项目与其他选定列表项的金额。