0

我在理解环氧树脂在 Android 中的工作原理时遇到问题。这里也有教程

想象一下我有一个适配器如下:

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

更新:

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

4

2 回答 2

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/

于 2018-04-14T12:51:36.190 回答
0

是的,您正确的 EpoxyModel 用于适配器中使用的每种视图类型

public void addFriendsPhotos(Collection<Photo> photosOfFriends) 
{

    addModel(new HeaderModel("photos your friends like"));

    for (Photo photo : photosOfFriends) 
    {
        addModel(new PhotModel(photo));
    }

 }
于 2016-12-13T18:30:30.290 回答