android - 如何将自定义对象的 arraylist 从一个 java 类传递到另一个 java 类?

标签 android arraylist

我有一个Arraylist自定义对象。我正在尝试将它从一个 java 文件传递​​到另一个文件。我尝试了putExtra方法和 Parcelable选项;但我无法理解 Parcelable

这是我的自定义对象:

public class AddValues implements Serializable{
    public int id;
    String value;

    public AddValues(int id, String value)
    {
        this.id = id;
        this.value = value;
    }

    @Override
    public String toString() {
        String result = "id = "+id+","+" value = "+value;
        return result;
    }

    public  int getid()
    {
        return  this.id;
    }

    public String getvalue()
    {
        return this.value;
    }
}

这是我发送 ArrayList 的代码:

Intent intent = new Intent(BluetoothLeService.this,HomePageFragment.class);
intent.putExtra("id", data_id);
intent.putExtra("value", list);

这里的“列表”指的是ArrayList

最佳答案

SerializableParcelable尽管它们服务于相同的目的,但它们不是同一件事。这个post包含 Parcelable 对象的示例。

您要创建的所有 Parcelable 对象都应遵循所采用的模式,仅更改 writeToParcelAddValues(Parcel in)方法。这两种方法应该互相镜像,如果 writeToParcel写了一个int然后是string ,构造函数应该读取 int然后是string

可打包

public class AddValues implements Parcelable{
    private int id;
    private String value;

    // Constructor
    public AddValues (int id, String value){
        this.id = id;
        this.value= value;
   }

   // Parcelling part
   public AddValues (Parcel in){
       this.id = in.readInt();
       this.value= in.readString();
   }

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

   @Override
   public void writeToParcel(Parcel dest, int flags) {
       dest.writeInt(id);
       dest.writeString(value);
   }

   public final Parcelable.Creator CREATOR = new Parcelable.Creator() {
       public AddValues createFromParcel(Parcel in) {
           return new AddValues(in); 
       }

       public AddValues[] newArray(int size) {
           return new AddValues[size];
       }
   };

}

现在将列表添加到 Intent extra 应该很简单

放置额外列表

ArrayList<AddValue> list = new ArrayList<>();
Intent intent = new Intent(BluetoothLeService.this,HomePageFragment.class);
intent.putExtra("arg_key", list);

获取额外列表

ArrayList<AddValues> list = (ArrayList<AddValues>) intent.getSerializableExtra("arg_key");

顺便说一句,您可以使用 Pair<Integer, String>对象而不是创建 AddValues目的。这不会影响答案,但了解一下可能会很高兴。

关于android - 如何将自定义对象的 arraylist 从一个 java 类传递到另一个 java 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36195825/

相关文章:

c# - 为 RESTful 服务格式化 DateTime 的最佳方式?

java - java中的arraylist对数据进行排序

java - ArrayList 中字符串的唯一实例

android - Activity.setResult(int) 和 Activity 生命周期

android - Id 未解析或不是字段

android - Android 上的短信网址

java - 使用对象的字段过滤 ArrayList

java - OpenGL (ES) -- 当新对象添加到 ArrayList 时,多边形会暂时消失

java - 如何通过java从mediastore中获取不同的元素

android - Unity 中的 UI 切换