我现在一直在努力定制,以便我可以在gridview(Image)中包含其他类型的视图。我想实现下面的布局,但在Universal Image Loader中它只显示图像。有这方面的经验吗?
XML:
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/image"
android:layout_width="fill_parent"
android:layout_height="120dip"
android:adjustViewBounds="true"
android:contentDescription="@string/descr_image"
android:scaleType="centerCrop" />
JAVA
public View getView(int position, View convertView, ViewGroup parent) {
final ImageView imageView;
if (convertView == null) {
imageView = (ImageView) getLayoutInflater().inflate(R.layout.item_grid_image, parent, false);
} else {
imageView = (ImageView) convertView;
}
imageLoader.displayImage(imageUrls[position], imageView, options);
return imageView;
}
我尝试了这段代码,但它没有用。基本上我想要上面的布局。
XML
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/widget44"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_x="201px"
android:layout_y="165px"
android:gravity="center_horizontal"
>
<ImageView
android:id="@+id/image"
android:layout_width="fill_parent"
android:layout_height="120dip"
android:adjustViewBounds="true"
android:contentDescription="@string/descr_image"
android:scaleType="centerCrop" />
<TextView
android:id="@+id/icon_text"
android:typeface="serif"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:textStyle="bold"
android:lines="2">
</TextView>
</LinearLayout>
爪哇
public View getView(final int position, View convertView, ViewGroup parent) {
View view = convertView;
final ViewHolder holder;
if (convertView == null) {
view = getLayoutInflater().inflate(R.layout.item_grid_image, parent, false);
holder = new ViewHolder();
holder.text = (TextView) view.findViewById(R.id.icon_text);
holder.image = (ImageView) view.findViewById(R.id.image);
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
holder.text.setText(album[position].getName());
imageLoader.displayImage(albumsPhoto[position], holder.image, options, animateFirstListener);
return view;
}
答案 0 :(得分:2)
ViewHolder
是一个自定义类,不属于Android SDK。它包含其他视图,如TextView,ImageView等等。此类可以在ListView中使用,其中使用了Adapter。 Read More了解有关持有人的更多信息。
由于您有布局,以下可以是您的ViewHolder
类结构。
static class ViewHolder {
public TextView text;
public ImageView image;
}
您可以看到,TextView
中有ImageView
和ViewHolder
。您需要定义与custom_list_item
布局相同的多个视图。
阅读 - &gt; ViewHolder Pattern – Caching View Efficiently
<强>布局强>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<RatingBar
android:id="@+id/ratingBar1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/linearLayout1" />
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_alignRight="@+id/ratingBar1"
android:layout_height="100dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:scaleType="fitXY"
android:src="@drawable/ic_launcher" />
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/imageView1"
android:layout_below="@+id/imageView1" >
<TextView
android:id="@+id/text1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="left"
android:text="text1" />
<TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="right"
android:text="text2" />
</LinearLayout>
</RelativeLayout>
答案 1 :(得分:0)
Hi Universal Image Loader是图库视图的示例。为了实现上述布局。您需要查看Holder类和适配器,LIstadapter。您可以在列表适配器中列出图像,并使用ViewHolder for Image和Subtitle。 如果要加载大量图像,MosT重要的是位图崩溃,所以你滚动的每个tiem都会删除位图的缓存内存。