使用视图翻转器在不同列表中显示相同图像

Displaying the same images in different lists with a view flipper

我有 viewflipper,其中包含 3 个孩子,一个 GridView 和两个自定义 ListView,每个视图都有不同的适配器,每个适配器都有一个带有通用图像加载器库的图像加载器。

所有适配器的项目都是相同的,我的目标是以不同的方式显示内容(网格、列表和大列表),但在这种方式下每个图像加载 3 次。有什么方法可以加载一次图像并显示给他们的孩子吗?

好吧,您似乎在问是否可以将图像传递给其他适配器。就像如果图像不为空,他们会在其他视图中使用它,如果不是,则使用图像加载器。

public class Constants {
    public static Constants INSTANCE = new Constants();
    public Constants() {
    }

    public Uri IMAGE_PATH = Uri.EMPTY;
    public File IMAGE_FILE = null;
    public Bitmap IMAGE = null;
}

大概您只会选择其中一种保存在您的视图中。然后查看constants是否有图片供你显示。

所以你需要一个三个视图通用的对象,它管理图像加载并保存内存。你有它:它是 Adapter。使用一个,只需切换布局。

例如,您可以在适配器中定义此方法:

int layoutResId;
public void changeLayout(int layoutResId) {
    this.layoutResId = layoutResId;
    notifyDataSetChanged(); //force the adapter to call getView() again
}

然后在您的 getView() 方法中,您只需扩充由 layoutResId 定义的布局。