使用视图翻转器在不同列表中显示相同图像
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
定义的布局。
我有 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
定义的布局。