【问题标题】:How do you select multiple items from a listview and work upon them on android [closed]如何从列表视图中选择多个项目并在 android 上处理它们 [关闭]
【发布时间】:2014-07-03 12:36:18
【问题描述】:

在我正在尝试开发的 android 应用程序中。

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

我想设计一个能解决这个问题的安卓应用。为此,我以所有希望一起去的人的名义说 Sam、Roy 和 Ria。

他们购买了我也输入的物品清单。假设他们一起购买了泰迪熊、遥控车和巧克力,价格分别为 50 美元、120 美元和 30 美元。假设 Ria 想要 Teddy,Sam 和 Roy 一起想要 RC Car,三人都想要巧克力。所以每个人应该为 Ria 支付的金额是 60 美元(50 美元 + 30 美元的 1/3 = 60 美元)、山姆和罗伊(120 美元的 1/2 + 30 美元的 1/3 = 70 美元)。

因此,为了实现这一点,我对每个项目执行此操作,我将其显示在顶部,并在列表视图中显示人员姓名,并在每个单独的列表项前面显示复选框。对于每个项目,我勾选已购买该项目的列表项目(人),然后按下一步。类似地,所有项目都显示出来,现在计算每个人要支付的金额。

【问题讨论】:

    标签: android listview android-listview


    【解决方案1】:

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

    所有这些事情都可以通过创建一个包含两个自定义字段的 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 然后计算该特定项目与其他选定列表项的金额。

    【讨论】:

      【解决方案2】:

      使用setChoiceMode() 方法。

      setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
      

      【讨论】:

        猜你喜欢
        • 2014-01-09
        • 1970-01-01
        • 1970-01-01
        • 2017-06-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-27
        相关资源
        最近更新 更多