如何将数组列表作为参数传递给片段并检索它

斯里卡·雷迪(Srikar Reddy)

我正在尝试将其ArrayList<DataField>作为参数传递给片段,但无法理解应该使用哪种方法。

我正在使用bundle这样将参数发送到Fragment

bundle.putSerializable(Constants.ARRAY_DATA, dataArray);

当我尝试使用以下方法获取Fragment中的参数时

getArguments().getSerializable(Constants.ARRAY_DATA)

我遇到错误

不兼容的类型。必需:java.util.ArrayList找到:java.io.Serializable“

getArguments().getParcelable(Constants.ARRAY_DATA);

没有显示任何错误,但

bundle.putParcelable(Constants.ARRAY_DATA, dataArray);

显示错误

第二个参数类型错误。找到:“ java.util.ArrayList”,必需:“ android.os.Parcelable”

Bundle中的putParcelable(String,android.os.Parcelable)无法应用于(String,java.util.ArrayList)  

我应该使用哪种方法通过捆绑包发送“自定义数据字段的数组列表”并使用参数检索它?

斯里卡·雷迪(Srikar Reddy)

通过bundle传递原始数据类型很容易,因为它们具有预定义的方法。只需使用唯一密钥放置数据,然后将其发送到另一个活动或片段。但是,如果用户希望通过捆绑包或意图发送自定义对象,则Data字段类应实现Parcelable接口。

您还可以使用Serializable,Parceler,GSON ...在所有Parcelable中,这是写入和读取对象的最快方法。

在下面,我们将看到Parcelable的实现,最后是如何使用它传递数据。

步骤1:使用Parcelable实现DataField类

public class DataField implements Parcelable {

步骤2:使用方法parcel对象writeToParcel将所有实例变量保存在DataField类中。

public void writeToParcel(Parcel parcel, int i) {
    parcel.writeString(itemName);
    parcel.writeString(itemUrl);
}

步骤3:说明文件

实现Parcelable接口的类还必须具有一个称为CREATOR的非空静态字段,该字段的类型应实现Parcelable.Creator接口。

因此,我们需要实现此接口以读取Parcelable。

public static final Creator<DataField> CREATOR = new Creator<DataField>() {
    @Override
    public DataField createFromParcel(Parcel in) {
        return new DataField(in);
    }

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

步骤4:看一下方法中的return语句createFromParcel我们有DataField(in)尚未在该类的前面定义的构造函数()。现在,我们将实现此构造函数,并还原我们之前保存的所有数据。

private DataField(Parcel in) {
    itemName = in.readString();
    itemUrl = in.readString();
}

确保以相同顺序读取所有变量。否则,您最终将在错误的变量中存储错误的值。

第5步:返回活动,只需使用

bundle.putParcelableArrayList(Constants.ARRAY_DATA, dataArray);

步骤6:在片段内部,使用参数和getParcelableArrayList方法获取数据数组

dataArray = getArguments().getParcelableArrayList(Constants.ARRAY_DATA);

您可以使用相同的过程传递ArrayList<DataField>经过的意图和putParcelableArrayListgetParcelableArrayList

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python:如何将列表作为参数传递给函数?

来自分类Dev

如何将列表作为参数传递给blazor页面

来自分类Dev

如何将列表作为参数传递给方法

来自分类Dev

如何将参数传递给片段?

来自分类Dev

如何将数组或列表作为参数传递给PowerShell函数?

来自分类Dev

我如何将列表,数组或字符串作为参数传递给redshift

来自分类Dev

如何将数组或列表作为参数传递给PowerShell函数?

来自分类Dev

如何将JSON数组作为参数传递给URL

来自分类Dev

如何将数组作为单独的参数传递给方法

来自分类Dev

如何将Swift数组作为参数传递给线程?

来自分类Dev

如何将列表参数传递给TCL数组获取?

来自分类Dev

如何将数组作为参数传递?

来自分类Dev

如何将参数传递给片段而不进行替换?

来自分类Dev

如何将参数传递给graphql片段?

来自分类Dev

如何将函数作为参数传递给参数?

来自分类Dev

将列表数组作为参数传递给Android AsynTask

来自分类Dev

如何将集合列表作为单独的参数传递给函数?

来自分类Dev

如何将字符串列表作为参数传递给批处理脚本?

来自分类Dev

如何将优化的参数作为列表传递给light gbm?

来自分类Dev

如何将逗号分隔的列表作为单个参数传递给mixin

来自分类Dev

如何将命令的输出作为参数列表传递给脚本?

来自分类Dev

如何将变量作为cURL数组中的url参数传递给CURLOPT_URL

来自分类Dev

如何将数组作为参数传递给最大值函数?

来自分类Dev

如何将私有数组作为参数传递给OpenCL内核?

来自分类Dev

如何将整个numpy数组作为python中的参数传递给用户定义的函数?

来自分类Dev

如何将常量数组作为参数传递给C ++函数/方法

来自分类Dev

如何将数组作为实际参数而不是全局变量传递给函数

来自分类Dev

BASH:如何将数组中的字符串作为参数传递给命令?

来自分类Dev

如何将数组(未知长度)的所有元素作为单独的参数传递给函数?

Related 相关文章

  1. 1

    Python:如何将列表作为参数传递给函数?

  2. 2

    如何将列表作为参数传递给blazor页面

  3. 3

    如何将列表作为参数传递给方法

  4. 4

    如何将参数传递给片段?

  5. 5

    如何将数组或列表作为参数传递给PowerShell函数?

  6. 6

    我如何将列表,数组或字符串作为参数传递给redshift

  7. 7

    如何将数组或列表作为参数传递给PowerShell函数?

  8. 8

    如何将JSON数组作为参数传递给URL

  9. 9

    如何将数组作为单独的参数传递给方法

  10. 10

    如何将Swift数组作为参数传递给线程?

  11. 11

    如何将列表参数传递给TCL数组获取?

  12. 12

    如何将数组作为参数传递?

  13. 13

    如何将参数传递给片段而不进行替换?

  14. 14

    如何将参数传递给graphql片段?

  15. 15

    如何将函数作为参数传递给参数?

  16. 16

    将列表数组作为参数传递给Android AsynTask

  17. 17

    如何将集合列表作为单独的参数传递给函数?

  18. 18

    如何将字符串列表作为参数传递给批处理脚本?

  19. 19

    如何将优化的参数作为列表传递给light gbm?

  20. 20

    如何将逗号分隔的列表作为单个参数传递给mixin

  21. 21

    如何将命令的输出作为参数列表传递给脚本?

  22. 22

    如何将变量作为cURL数组中的url参数传递给CURLOPT_URL

  23. 23

    如何将数组作为参数传递给最大值函数?

  24. 24

    如何将私有数组作为参数传递给OpenCL内核?

  25. 25

    如何将整个numpy数组作为python中的参数传递给用户定义的函数?

  26. 26

    如何将常量数组作为参数传递给C ++函数/方法

  27. 27

    如何将数组作为实际参数而不是全局变量传递给函数

  28. 28

    BASH:如何将数组中的字符串作为参数传递给命令?

  29. 29

    如何将数组(未知长度)的所有元素作为单独的参数传递给函数?

热门标签

归档