如何从列表视图中选择多个项目并在android上进行处理

时间:2014-07-03 12:36:19

标签: android listview android-listview

在我试图开发的Android应用程序中。

有些人一起去某个地方并一起花钱。因为当我们进入一个团体时,我们进行团购,人们倾向于互相支付。我们常常忘记欠谁和欠多少。

我想设计一个可以解决这个问题的Android应用。为此,我把所有希望一起去的人说出Sam,Roy和Ria。

他们购买了我也输入的物品清单。假设他们一起购买Teddy,RC Car和巧克力,价格分别为50美元,120美元和30美元。假设Ria希望Teddy,Sam和Roy一起想要RC Car和所有三个想要的巧克力。因此,每个人应支付的金额为Ria 60美元(50美元+ 30美元的1/3 = 60美元),Sam和Roy(120美元的1/2和30美元的1/3 =每个70美元)。

为了实现这一点,我所做的就是为每个项目,我在顶部显示它,列表视图中的人名,每个列表项前面都有复选框。对于每个项目,我勾选已购买该项目的列表项目(人员),然后按下一步。类似地,显示所有项目,并且现在计算每个人要支付的金额。

2 个答案:

答案 0 :(得分:0)

我认为您在选择多个列表项时遇到问题,或者在知道选择了哪个活动列表项或未选择哪个列表项时遇到问题。

所有这些事情都可以通过创建一个getter setter类来轻松完成,其中两个自定义字段一个是字符串选择,另一个是未选中所有其他getter setter对象。

然后创建一个带有getter setter数据类型的自定义arraylist

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;
    }
}

然后按默认值设置= 0;和未选中= 1; 当你通常在json解析或从数据库中获取数据并将其插入arraylist时,将实时数据添加到getter setter。

然后使用您创建的自定义数组列表设置列表适配器以显示视图数据。

MyGetterSetter model = listData.get(position);

if(model.getSelected==1)
{
 yourCheckbox.setSelected(true);
}
else
{
yourCheckbox.setSelected(false);
}

//也可以通过这种方式在适配器中设置复选框/按钮单击监听器..

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的值(如果已选择或取消选择= 0); 如果用户选择了列表项 设置选择= 0和未选择= 1; 如果用户未选择。

然后在列表正下方附加一个按钮,在该按钮上单击循环整个适配器数据和/或数组列表数据并检查状态和位置。 如果发现selected = 1 然后使用其他选定的列表项计算该特定项目的金额。

答案 1 :(得分:0)

使用setChoiceMode()方法。

setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);