我在理解epoxy在Android中的运作方式时遇到了问题。还有一个教程here
想象我有一个适配器如下:
public class PhotoAdapter extends EpoxyAdapter {
private final LoaderModel loaderModel = new LoaderModel();
public PhotoAdapter() {
models.add(new HeaderModel("My Photos"));
models.add(loaderModel);
notifyItemRangeInserted(0, 2);
}
public void addPhotos(Collection<Photo> photos) {
for (Photo photo : photos) {
int loaderPosition = models.size() - 1;
models.add(loaderPosition, photo);
notifyItemInserted(loaderPosition);
}
}
}
我如何插入关于“朋友喜欢的照片”的新项目。所以我想要一个新的标题来说“照片你的朋友喜欢”,然后我需要实际添加我已存储在模型中的照片。
我会按照以下方式使其正常工作:
public void addFriendsPhotos(Collection<Photo> photosOfFriends) {
models.add(new HeaderModel("photos your friends like"));
for (Photo photo : photosOfFriends) {
int loaderPosition = models.size() - 1;
models.add(loaderPosition, photo);
notifyItemInserted(loaderPosition);
}
}
我对“模特”课有点困惑。我想例如会有一个PhotosModel类和一个PhotoFriendsModel类等,而不是从示例中看到HeaderModel和LoaderModel。我认为应该有每个项目行类型的模型。有人可以解释。
更新:
让我们说我有更多的信息,而不是照片。假设我有关于照片拍摄地址的信息。所以现在所有照片都显示在照片的正下方后,我想显示一张巨大的地址列表,其中包含每张照片。告诉我如何添加地址列表?
答案 0 :(得分:0)
是的,您的权利EpoxyModel用于适配器中使用的每种视图类型
public void addFriendsPhotos(Collection<Photo> photosOfFriends)
{
addModel(new HeaderModel("photos your friends like"));
for (Photo photo : photosOfFriends)
{
addModel(new PhotModel(photo));
}
}
答案 1 :(得分:0)
public class PhotoAdapter extends EpoxyAdapter {
private final LoaderModel loaderModel = new LoaderModel();
public PhotoAdapter() {
models.add(new HeaderModel("My Photos"));
models.add(loaderModel);
notifyItemRangeInserted(0, 2);
}
public void addPhotos(Collection<Photo> photos) {
for (Photo photo : photos) {
int loaderPosition = models.size() - 1;
models.add(loaderPosition, photo);
notifyItemInserted(loaderPosition);
}
}
}
您可以使用 models.add(loaderPosition,photo); 插入新模型。