代码之家  ›  专栏  ›  技术社区  ›  Angel Pat Martin

将对象从Listview中的选中项保存并传递给另一个活动[重复]

  •  0
  • Angel Pat Martin  · 技术社区  · 6 年前

    我所拥有的: 2.一行由一个复选框和两个带有姓名和电子邮件的字符串构成。 3.我从BaseAdapter扩展

    -当用户按下一个名为“下一步”的按钮(导致一个新的活动)时,所有选中的对象必须保持选中状态,只有那些对象在下一个活动中才可见。

    我说的不是传递基本数据类型,而是传递和维护对另一个活动中列表中所有选定(选中)对象的引用

    我试过的

    • 我试图通过SharedReferences保存它,但它只保存数组的最后一个索引。

    我的简短而一般的问题是:我应该在哪里保存复选框侦听器中选定的对象,或者如何仅维护另一个活动中选定的对象?

    这是我的checkBoxListener不确定如何保存所选对象

    chkBoxUser.setOnClickListener(new View.OnClickListener()
            {
                @Override
                public void onClick(View view)
                {
                    if (chkBoxUser.isChecked())
                    {
                         //saveData(obj, obj.saleId);
    
                        ArrayList<SaleModel> saleSelected = new ArrayList<>();
                        saleSelected.add(obj);
    
                        Toast.makeText(context, "Object added!: " + saleSelected.get(0), Toast.LENGTH_SHORT).show();
    
                    }
                    else
                    {
                        saleSelected.remove(obj);
                        Toast.makeText(context, "UNChecked: " + obj.customerFirstName, Toast.LENGTH_SHORT).show();
                    }
    
                }
            });
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   user1506104    6 年前

    你的数据很简单。你不需要传递对象。相反,可以将每个对象另存为JSONObject。每个选中的项目都保存到JSONArray。

    现在,使用包含字符串参数的intent调用下一个活动。string参数应该包含JSONArray的字符串表示形式。

    在下一个活动中,通过解析字符串paramater执行相反的操作,并将其放回JSONArray对象。最后,重新创建初始对象。