我想RecyclerView在屏幕旋转后不重新加载.我发现,我需要存储/恢复List的Adapter.不是吗?
但是有问题:
Found java.util.List<Department> requried java.util.ArrayList<?extends android.os.Parcelable>
Run Code Online (Sandbox Code Playgroud)
当我尝试将列表放入包中时:
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putParcelableArrayList("key", mAdapter.getList());
}
Run Code Online (Sandbox Code Playgroud)
mAdapter.getList()List<Department>从RecyclerView的适配器返回.
但是我Parcelable在Department模型类中实现了:
@Parcel
public class Department implements UrlInterface,Parcelable {
@SerializedName("department_id")
@Expose
String departmentId;
@SerializedName("short_name")
@Expose
String shortName;
@Expose
String url;
@Expose
HashMap<Integer, Category> categories;
public Department() {}
protected Department(android.os.Parcel in) {
departmentId = in.readString();
shortName = in.readString();
url = in.readString();
}
public static final Creator<Department> CREATOR = new Creator<Department>() {
@Override
public Department createFromParcel(android.os.Parcel in) {
return new Department(in);
}
@Override
public Department[] newArray(int size) {
return new Department[size];
}
};
public String getDepartmentId() { return departmentId; }
public void setDepartmentId(String departmentId) { this.departmentId = departmentId; }
public String getShortName() { return shortName; }
public void setShortName(String shortName) { this.shortName = shortName; }
@Override
public String getUrl() { return url; }
@Override
public String getFullName() { return shortName; }
public void setUrl(String url) { this.url = url; }
public HashMap<Integer, Category> getCategories() { return categories; }
@Override
public String toString() { return shortName; }
@Override
public String getImageUrl() { return null; }
@Override
public int describeContents() { return 0; }
@Override
public void writeToParcel(android.os.Parcel dest, int flags) {
dest.writeString(departmentId);
dest.writeString(shortName);
dest.writeString(url);
}
}
Run Code Online (Sandbox Code Playgroud)
怎么了 ?
dan*_*ata 10
ArrayList是一个子类List,从... List转向ArrayList...糟糕的想法...它会产生问题,特别是对于可分配的东西.
因此,快速解决方案是:
outState.putParcelableArrayList("key", new ArrayList<Department>(mAdapter.getList()));.
| 归档时间: |
|
| 查看次数: |
5858 次 |
| 最近记录: |