我没有使用 Gallery 小部件的经验,但我使用了很多带有图像的 ListView。根据你的问题,并链接到谷歌问题,他们仍然没有解决这个问题。
因此,有很好的库(以及其中的示例)的解决方案,可以解决缓存/ajax 问题等等。
链接到图书馆
或者,更具体地说,链接到图像示例
如果您下载他们的示例,您会发现他们如何使用 Gallery 小部件实现画廊,使用他们的 AQuery 实用程序类
com.androidquery.test.image.ImageLoadingGalleryActivity
班级。
代码片段:
final List<Photo> entries;// here only to show what enteries are...
listAq = new AQuery(this); //define as Action class member, here only to show what it is
ArrayAdapter<Photo> aa = new ArrayAdapter<Photo>(this, R.layout.gallery_item, entries){
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null){
convertView = getLayoutInflater().inflate(R.layout.gallery_item, parent, false);
}
Photo photo = getItem(position);
AQuery aq = listAq.recycle(convertView);
aq.id(R.id.name).text(photo.title);
String tbUrl = photo.tb;
if(!aq.shouldDelay(position, convertView, parent, tbUrl)){
aq.id(R.id.tb).image(tbUrl);
aq.id(R.id.text).text(photo.title).gone();
}else{
aq.id(R.id.tb).clear();
aq.id(R.id.text).text(photo.title).visible();
}
return convertView;
}
};
aq.id(R.id.gallery).adapter(aa);
其中 Photo 只是 POJO 对象(从远程获取):
class Photo {
String tb;
String url;
String title;
String author;
}
R.id.gallery
指
<Gallery
android:id="@+id/gallery"
android:layout_width="fill_parent"
android:layout_height="200dip" />
并R.layout.gallery_item
指:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="100dip"
android:layout_height="75dip" >
<ProgressBar
android:id="@+id/progress"
android:layout_width="15dip"
android:layout_height="15dip"
android:layout_centerInParent="true" />
<ImageView
android:id="@+id/tb"
style="@style/GalleryItem"
android:layout_width="100dip"
android:layout_height="75dip" />
<TextView
android:id="@+id/text"
android:layout_width="100dip"
android:layout_height="75dip"
android:gravity="center"
android:maxLines="4"
android:padding="15dip"
android:text="Dummy TextDummy TextDummy TextDummy TextDummy Text"
android:textColor="#FFFFFFFF"
android:textSize="8sp" />
</RelativeLayout>
希望你会发现这个库对解决你的问题很有用。