airbnb epoxy - 如何插入新物品

时间:2016-12-11 20:03:20

标签: android

我在理解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);
    }
  }
}

根据example here

我如何插入关于“朋友喜欢的照片”的新项目。所以我想要一个新的标题来说“照片你的朋友喜欢”,然后我需要实际添加我已存储在模型中的照片。

我会按照以下方式使其正常工作:

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。我认为应该有每个项目行类型的模型。有人可以解释。

更新:

让我们说我有更多的信息,而不是照片。假设我有关于照片拍摄地址的信息。所以现在所有照片都显示在照片的正下方后,我想显示一张巨大的地址列表,其中包含每张照片。告诉我如何添加地址列表?

2 个答案:

答案 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); 插入新模型。

请参阅http://airbnb.io/projects/epoxy/