android - 使用 putExtra 传递 ArrayList<Object> 数据

标签 android listview android-activity arraylist

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

你愿意帮助我吗?

这是我的数据类:

公共(public)类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"));

我不知道如何将数组列表数据发送到另一个 Activity 。请帮助我:)也给我一些例子:)谢谢

最佳答案

您需要使您的基础对象 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];
        }
    };
}

一旦它是可分包的,您只需在第一个 Activity 中执行以下操作即可:

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

您可以在其他 Activity 中将其读取为:

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);
    }
});

然后在目标 Activity 中:

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

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

相关文章:

android - 在 recyclerview 适配器中带有 if 条件的方法中缺少 return 语句

android - 如何在 Android XML 中创建动态变化的云形语音气泡

java - 将 ListView 放入 Horizo​​ntalScrollView 的最佳方法是什么?

android - 更改由 CustomAdapter(扩展 BaseAdapter)创建的微调器上的文本

java - Android:使用文本时菜单按钮损坏

java - MySQL 数据库连接不工作

android - 删除未反射(reflect)在图库中的图像

android - 想要将数组的一部分加载到 android ListAdapter 中

android - 在 MediaPlayer App 中播放音乐的服务或 Activity

android:基本 Activity 上的按钮点击事件