回收器视图从可包裹阵列列表



我有一个嵌套在另一个数组列表中的自定义对象的数组列表,如下所示:

public class Person implements Parcelable {
private String Name;
private float Age;
private String Email;
ArrayList<Hobbies> Hobbies;

public Person(String name, float age, String email, ArrayList<Hobbies> hobbies) {
this.Name = name;
Age = age;
this.Email = email;
this.Hobbies = hobbies;
}

我使用"putParcelableArrayListExtra(("将此数组列表从 MainActivity 传递到另一个活动

intent.putParcelableArrayListExtra(HOBBIES_ARRAY, Person.get(position).getHobbies());

我用它来检索它

hobbiesArray = new Arraylist<>();
hobbiesArray = getIntent().getParcelableArrayListExtra(MainActivity.HOBBIES_ARRAY);

然后,我将此列表添加到回收器视图

hobbiesRecycler = findViewById(R.id.HobbyRecycler);
mLayoutManager = new LinearLayoutManager(this);
adapter = new HobbiesAdapter(hobbiesArray);
hobbiesRecycler.setLayoutManager(mLayoutManager);
hobbiesRecycler.setAdapter(adapter);
adapter.notifyDataSetChanged();

这是我得到的错误:java.lang.NullPointerException: Attempt to invoke virtual method 'int java.util.ArrayList.size()' on a null object reference at com.example.ReminderApp.hobbiesAdapter.getItemCount(hobbiesAdapter.java:55)

编辑:我还从第二个活动将项目添加到数组列表中

将空检查添加到适配器中的 getItemsCount 函数中。

.... getItemsCount(){
returm yourList != null ? yourList.size() : 0;
}

爱好也可以打包吗?从您显示的代码来看,类 Person 是可包裹的,因此可以发送。

您可以使用 http://www.parcelabler.com/来确保设置所需的所有方法。

尝试发送 Person,然后从 Person 类中检索爱好。

最新更新