我见过其他类似的帖子,这些帖子并没有解决我的问题,因为我的图像分辨率很小(见底部)与他们的相比。我想要一个活动,其中我列出了像是listview的imageview。但由于我不知道如何在Listview中做到这一点,我决定使用gridview和每列一个元素。在这里我的代码 - 它主要是从示例developer.android.com复制的,除了我将网格的宽度拉伸到屏幕的宽度:
public class ImageAdap extends BaseAdapter {
private Context mContext;
private int widthDisplay;
public ImageAdap(Context c, int width) { //int width is the width of the display in pixel
mContext = c;
widthDisplay = width;
}
public int getCount() {
return mThumbIds.length;
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
int height = widthDisplay * 3 / 4;
if (convertView == null) {
// if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(widthDisplay, height));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(mThumbIds[position]);
return imageView;
}
// references to our images
private Integer[] mThumbIds = {
R.drawable.sampleda_01,
R.drawable.sampleda_02,
R.drawable.sampleda_03,
R.drawable.sampleda_04
}; }
代码在我的8'平板电脑上流畅地工作(我也在10'虚拟设备上进行了测试,它也运行良好)。但是在两个不同的手机和两个约5英寸的虚拟设备上它落后于地狱。
我的图片的分辨率为800x640。我也测试了600x480(图像的质量也最差,每个像90kb) - >所有相同的结果。似乎图像的分辨率对我的问题无关紧要。但是因为它适用于平板电脑:我的平板电脑与我测试的手机相比较旧,所以使用的硬件也不应该是问题的根源。
我在4.1中设计了应用程序,并在虚拟设备和5.0上测试了4.4和6.0,不知道哪个版本带有手机 - > API也不应该是问题。
你们有什么想法吗?
答案 0 :(得分:1)
尝试实现ViewHolder模式。这必须提高生产力。 这是一个很好的例子,说明如何做到这一点: click
为什么你的' getItem()'方法返回' null'?
答案 1 :(得分:1)
我遇到了保存问题,我在AndroidManifest.xml中添加android:largeHeap="true"
然后效果更好。但我不确定同样的原因是否会导致问题