Java 如何通过Intent.ACTION\u发送共享Arraylist

Java 如何通过Intent.ACTION\u发送共享Arraylist,java,android,google-cloud-firestore,Java,Android,Google Cloud Firestore,我正在开发一个应用程序,它有一个带有产品名称和数量的Arraylist。现在我想通过WhatsApp、电子邮件或任何他能做到的方式分享这些信息。 例如: List listaCompras2=newarraylist(); //listaCompras2有一个for循环,每当客户机输入产品和数量时,都可以获取新内容。 添加(新的comparilHar(doc.getString(“inputNome”)、doc.getString(“inputQtd”)); fabShare=view.find

我正在开发一个应用程序,它有一个带有产品名称和数量的Arraylist。现在我想通过WhatsApp、电子邮件或任何他能做到的方式分享这些信息。 例如:

List listaCompras2=newarraylist();
//listaCompras2有一个for循环,每当客户机输入产品和数量时,都可以获取新内容。
添加(新的comparilHar(doc.getString(“inputNome”)、doc.getString(“inputQtd”));
fabShare=view.findviewbyd(R.id.fabShare);
fabShare.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
意向共享意向=新意向(意向.行动\发送);
对于(int i=0;i
导入java.util.ArrayList

导入java.util.List

公共类Compartilhar实现了Parcelable{

private List<String> produto;
private List<String> qtd;

public Compartilhar(List<String> produto, List<String> qtd) {
    this.produto = produto;
    this.qtd = qtd;
}

public List<String> getProduto() {
    return produto;
}

public void setProduto(List<String> produto) {
    this.produto = produto;
}

public List<String> getQtd() {
    return qtd;
}

public void setQtd(List<String> qtd) {
    this.qtd = qtd;
}

protected Compartilhar(Parcel in) {
    if (in.readByte() == 0x01) {
        produto = new ArrayList<String>();
        in.readList(produto, String.class.getClassLoader());
    } else {
        produto = null;
    }
    if (in.readByte() == 0x01) {
        qtd = new ArrayList<String>();
        in.readList(qtd, String.class.getClassLoader());
    } else {
        qtd = null;
    }
}

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

@Override
public void writeToParcel(Parcel dest, int flags) {
    if (produto == null) {
        dest.writeByte((byte) (0x00));
    } else {
        dest.writeByte((byte) (0x01));
        dest.writeList(produto);
    }
    if (qtd == null) {
        dest.writeByte((byte) (0x00));
    } else {
        dest.writeByte((byte) (0x01));
        dest.writeList(qtd);
    }
}

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

    @Override
    public Compartilhar[] newArray(int size) {
        return new Compartilhar[size];
    }
};
私有列表produto;
私人名单qtd;
公共比较器(列表产品、列表qtd){
this.produto=produto;
this.qtd=qtd;
}
公共列表getProduto(){
返回产品;
}
公共无效setProduto(列表produto){
this.produto=produto;
}
公共列表getQtd(){
返回qtd;
}
公共无效设置qtd(列表qtd){
this.qtd=qtd;
}
受保护的CompatilHar(包裹在中){
if(in.readByte()==0x01){
produto=newarraylist();
in.readList(produto,String.class.getClassLoader());
}否则{
produto=null;
}
if(in.readByte()==0x01){
qtd=新的ArrayList();
in.readList(qtd,String.class.getClassLoader());
}否则{
qtd=null;
}
}
@凌驾
公共int描述内容(){
返回0;
}
@凌驾
公共无效写入包裹(包裹目的地,内部标志){
if(produto==null){
目标写入字节((字节)(0x00));
}否则{
目标写入字节((字节)(0x01));
目的写入列表(produto);
}
如果(qtd==null){
目标写入字节((字节)(0x00));
}否则{
目标写入字节((字节)(0x01));
目的写入列表(qtd);
}
}
@抑制警告(“未使用”)
public static final Parcelable.Creator=新建Parcelable.Creator(){
@凌驾
公共比较器Har createFromParcel(地块中){
返回新的comparilhar(in);
}
@凌驾
公共ComparilHar[]新数组(整数大小){
返回新的Compartilhar[大小];
}
};

}

要将ArrayList放入您可以使用 putParcelableArrayListExtra(字符串名称,ArrayList值)方法。请注意,此方法允许传递实现可包裹界面的项目列表。因此,在您的情况下,Compartilhar类应该实现Parcelable接口


据我所知,您希望将这些项目共享给其他应用程序,这可能会很棘手,因为每个独立应用程序(Whatsapp等)都有自己的逻辑,它们如何处理/解析来自intent的数据。

那么有没有办法将此Arraylist转换为文档,然后共享此文档?您可能可以创建一个本地文件,并将列表写入此文件中(并格式化文件),然后用此文件发送一个隐式共享意图,并查看哪个应用程序可以处理您的意图。正如您的第一个回答所说,我实现了我的ComparilHar类并编辑了此帖子。我现在如何更改代码以使其发送列表?
private List<String> produto;
private List<String> qtd;

public Compartilhar(List<String> produto, List<String> qtd) {
    this.produto = produto;
    this.qtd = qtd;
}

public List<String> getProduto() {
    return produto;
}

public void setProduto(List<String> produto) {
    this.produto = produto;
}

public List<String> getQtd() {
    return qtd;
}

public void setQtd(List<String> qtd) {
    this.qtd = qtd;
}

protected Compartilhar(Parcel in) {
    if (in.readByte() == 0x01) {
        produto = new ArrayList<String>();
        in.readList(produto, String.class.getClassLoader());
    } else {
        produto = null;
    }
    if (in.readByte() == 0x01) {
        qtd = new ArrayList<String>();
        in.readList(qtd, String.class.getClassLoader());
    } else {
        qtd = null;
    }
}

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

@Override
public void writeToParcel(Parcel dest, int flags) {
    if (produto == null) {
        dest.writeByte((byte) (0x00));
    } else {
        dest.writeByte((byte) (0x01));
        dest.writeList(produto);
    }
    if (qtd == null) {
        dest.writeByte((byte) (0x00));
    } else {
        dest.writeByte((byte) (0x01));
        dest.writeList(qtd);
    }
}

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

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