Java 将对象从列表视图中的选中项保存并传递给另一个活动

Java 将对象从列表视图中的选中项保存并传递给另一个活动,java,android,listview,baseadapter,Java,Android,Listview,Baseadapter,大家好,我已经挣扎了三天,想找到一个解决办法。有人能给我指出正确的方向吗?我的问题如下: 我所拥有的: 1.通过“Sales”类型的对象填充的列表视图 2.单行由一个复选框和两个带有名称和电子邮件的字符串构成。 3.我从BaseAdapter扩展 我需要什么: -当用户按下一个名为“下一步”的按钮(导致新活动)时,所有选中的对象必须保持选中状态,只有这些对象在下一个活动中可见 我不是说传递基本数据类型,而是说传递和维护对另一个活动列表中所有选定(选中)对象的引用 我尝试过的 -我已经创建了一个静

大家好,我已经挣扎了三天,想找到一个解决办法。有人能给我指出正确的方向吗?我的问题如下:

我所拥有的: 1.通过“Sales”类型的对象填充的列表视图 2.单行由一个复选框和两个带有名称和电子邮件的字符串构成。 3.我从BaseAdapter扩展

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

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

我尝试过的 -我已经创建了一个静态ArrayList,并尝试在用户选中复选框时将所有选定对象保存在该复选框的侦听器中。我将此对象添加到我的静态数组中,但不起作用。当我尝试从另一个活动读回该对象时,它会给出一个空数组

  • 我试图通过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();
                }

            }
        });
chkBoxUser.setOnClickListener(新视图.OnClickListener()
{
@凌驾
公共void onClick(视图)
{
if(chkBoxUser.isChecked())
{
//保存数据(obj,obj.saleId);
ArrayList saleSelected=新建ArrayList();
添加(obj);
Toast.makeText(上下文,“添加对象!”:“+saleSelected.get(0),Toast.LENGTH_SHORT.show();
}
其他的
{
删除(obj);
Toast.makeText(上下文,“未选中:”+obj.customerFirstName,Toast.LENGTH\u SHORT.show();
}
}
});

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

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

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


如果你需要密码,请告诉我

但这是针对基本数据类型的,我是针对对象的,在另一个活动的复选框侦听器中。在这里发布您的代码。你到底试了什么yet@AngelPatMartinparcelable和serializable对象也是如此。简而言之,在对象上实现parcelable接口。把它捆起来(如果不是太大的话)。然后使用正在启动的活动中的Intent extras(Bundle)读取该数据。网上有很多关于这个的教程。是的,那太好了。我出去了一会儿。我会再打给你的。同时,请尝试我的解决方案。应该很容易。