我在Android上是新手。我需要使用customAdapter将数据从ListView发送到detailActivity,该数据显示listView所选项目中的详细信息。我已经看到了一些关于它的文章,但我仍然对此感到困惑。

你能帮我吗?

这是我的数据类:

公共类ListData {

private String title;
private String desc;

public ListData(String title, String desc) {
    this.title = title;
    this.desc = desc;
}

public String getTitle() {
    return title;
}

public String getDesc() {
    return desc;
}


}

这是我的arrayList声明:

ArrayList<ListData> data = new ArrayList<ListData>();
data.add(new ListData("Sidik Suhendar", "Telkom University"));


我不知道如何将我的arraylist数据发送到另一个活动。请帮助我:)也给我一些例子:)谢谢

最佳答案

您需要使基础对象ListData可拆分:

public class ListData implements Parcelable {

    private String title;
    private String desc;

    public ListData(String title, String desc) {
        this.title = title;
        this.desc = desc;
    }

    public String getTitle() {
        return title;
    }

    public String getDesc() {
        return desc;
    }

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

    public ListData(Parcel source) {
        title = source.readString();
        desc = source.readString();
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(title);
        dest.writeString(desc);

    }

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

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


一旦可包裹,您可以在第一个活动中简单地做:

ArrayList<ListData> data = new ArrayList<ListData>();
data.add(new ListData("Sidik Suhendar", "Telkom University"));
intent.putParcelableArrayListExtra("ARRAY_LIST", data);


您可以在其他活动中将其阅读为:

ArrayList<ListData> data = (ArrayList<ListData>) getIntent().getExtras().getParcelableArrayList("ARRAY_LIST");


编辑:

listview.setOnItemClickListener(new OnItemClickListener(){
    @Override
    public void onItemClick(AdapterView<?>adapter,View v, int position){
        ListData item = adapter.getItemAtPosition(position);
        Intent intent = new Intent(Activity.this,DetailActivity.class);
        intent.putExtra("ARRAY_ITEM", item);
        startActivity(intent);
    }
});


然后在目标活动中:

ListData data = (ListData) getIntent().getExtras().getParcelable("ARRAY_ITEM");

关于android - 使用putExtra传递ArrayList <Object>数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49354438/

10-10 08:53
查看更多