Android - 带有通用图像加载器中另一个视图的ImageView

时间:2013-07-10 06:25:54

标签: java android android-xml universal-image-loader

我现在一直在努力定制,以便我可以在gridview(Image)中包含其他类型的视图。我想实现下面的布局,但在Universal Image Loader中它只显示图像。有这方面的经验吗?

enter image description here

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;
    }

2 个答案:

答案 0 :(得分:2)

ViewHolder是一个自定义类,不属于Android SDK。它包含其他视图,如TextView,ImageView等等。此类可以在ListView中使用,其中使用了Adapter。 Read More了解有关持有人的更多信息。

由于您有布局,以下可以是您的ViewHolder类结构。

static class ViewHolder {
    public TextView text;
    public ImageView image;
}

您可以看到,TextView中有ImageViewViewHolder。您需要定义与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都会删除位图的缓存内存。