当前位置: 首页 > 面试题库 >

如何初始化存储在另一个活动的Pojo类中的arraylist?

幸乐湛
2023-03-14
问题内容

我想将数据存储在ArrayList中并在另一个类中访问它,但是当我访问时arraylist,它arraylist.size()是0。意味着我没有访问相同的arraylist。有人告诉我我做错了。

这是我的POJO课

public class item {
   private String name;
   private String body;
   private String profileImage;

public Item(){

}

public Item(String body,String name,String profileImage){
  this.body = body;
  this.name = name;
  this.profileImage = profileImage;
}
//Getter and setter

这是我将数据存储A类中的方法该类 已经过检查,已成功将其插入到arraylist中。

A级

 List<Item> items = new ArrayList<>();
 Item item = new Item();
 item.setBody(body);
 item.setName(name);
 item.setProfileImage(profileImage);
 items.add(item);

问题出在 B类中, 当我访问item.size()它的返回值0时,意味着我没有访问相同的arraylist。

这是我在 B类中* 所做的 *

List<Item>items = new ArrayList<>();
Log.d("ListSize",String.valueOf(items.size()));

我尝试过RecycleView之前做过的事情,但这不起作用,因为我的B类是Fragment活动

public Class B(Context mContext, List<Item> items) {
    this.mContext = mContext;
    this.items = items;
}

那么,什么是正确的办法,我初始化我数据保存到ArrayList A类B类


问题答案:

像这样更改类:

public class Item implements Parcelable{
   private String name;
   private String body;
   private String profileImage;

public Item(){

}

public Item(Parcel in) {
            name = in.readString();
            body = in.readString();
            profileImage = in.readString();
        }


 @Override
        public int describeContents() {
            return 0;
        }


        @Override
        public void writeToParcel(Parcel dest, int flags) {
            dest.writeString(name);
            dest.writeString(body);
            dest.writeString(profileImage);
        }

        @SuppressWarnings("unused")
        public static final Parcelable.Creator<Item> CREATOR = new Parcelable.Creator<Item>() {
            @Override
            public Item createFromParcel(Parcel in) {
                return new Item(in);
            }

            @Override
            public Item[] newArray(int size) {
                return new Item[size];
            }
        };


public Item(String body,String name,String profileImage){
  this.body = body;
  this.name = name;
  this.profileImage = profileImage;
}

现在处于A类:

ArrayList<Item> mDATA = new ArrayList<>();

/******   add values in array list  ****/

                Intent i = new Intent(CLASS_A.this, CLASS_B.class);
                i.putParcelableArrayListExtra("ARRAY_DATA", mDATA);
                startActivity(i);

现在在B类中,获取列表:

Intent intent = getIntent();
    ArrayList<Item> mDATAFROMA = new ArrayList<>();
     try {
                    mDATAFROMA = intent.getParcelableArrayListExtra("ARRAY_DATA");
                    Log.d("ListSize",String.valueOf(mDATAFROMA.size()));
                } catch (Exception e) {
                    e.printStackTrace();
                }

对于破裂通过:

Bundle args = new Bundle();
        args.putParcelableArrayList("GET_LIST", (ArrayList<? extends Parcelable>) mDATA);
        fragmentDemo.setArguments(args);

并在片段中获取:

ArrayList<Item> mDATAFROMA = new ArrayList<>();

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Bundle pb=getArguments();
        mDATAFROMA = pb.getParcelableArrayList("GET_LIST"); 
    }


 类似资料:
  • 问题内容: 我有一堂课,称为extends 。 现在,在我的父级活动中,我想“运行”此片段。 这是我的: 如何运行/启动片段?我希望我的方法可以触发。 问题答案: 有很多文档!您需要的一切已经在这里。 当然,您需要在活动布局中使用该容器。

  • 这是我想用typescript中的mocha chai测试框架测试的类。我用ts mockito来模仿。 ClassAResource类看起来像这样, 在我的测试中,我试图模仿ClassAResource的getJob方法,如下所示, 我这样调用ClassA cancel方法, 我希望取消方法中的getJobs调用被模拟并返回一个作业对象。 但是这次考试并没有按照我的预期进行。Mock不会出现在图

  • 简而言之,我创建了一个类Something witch具有一个带有JFrame的函数,其中我有一个标签和一个按钮。在按钮上有一个addActionListener(new changeLabel())。我在src包中为侦听器类了changeLabel,但当我启动应用程序并单击按钮时,在changeLabel上抛出一个NullPointerException NameLabel.setText(“N

  • 我的kotlin项目有两个activitis(main,第二个名为:AddPlayer)。main活动有一个名为“添加播放器”的按钮,它启动第二个活动。在第二个活动中,我有两个编辑文本来获得一个数字和一个来自用户的文本。在第二个活动中按下提交按钮后,在主活动中,我想将这些值添加到我的可变列表中,但idk如何操作(我认为它崩溃了,因为主活动在从用户获取值之前使用了这些变量)plz指导我。 我的活动代

  • 我有两个模块。应用程序和模块测试。模块应用程序包含带按钮的主活动。模块测试包含主要活动二。我想通过点击按钮从模块应用程序运行Test/MainActivity。但Android仍然无法从模块测试中看到主要活动。见下文。 模块应用清单: 模块测试清单: 在模块app MainActivity中为单击按钮和运行第二个活动编码: 在控制台我得到一个错误: 带系统。错误:java。lang.ClassNo