0

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

在此处输入图像描述

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" />

爪哇

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

2 回答 2

2

ViewHolder是一个自定义类,它不是 Android SDK 的一部分。它包含其他视图,例如 TextView、ImageView 等等。这个类可以在使用 Adapter 的 ListView 中使用。阅读更多以了解有关持有人的更多信息。

当您有布局时,以下可以是您的ViewHolder类结构。

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

你可以看到,有TextViewImageView在 中ViewHolder。您需要定义与custom_list_item布局一样多的视图。

阅读 -> ViewHolder 模式——高效缓存视图

布局

<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>
于 2013-07-10T07:05:44.067 回答
0

您好 Universal Image Loader 是图库视图的示例。为了实现上面的布局。您需要查看 Holder 类和一个适配器、LIstadapter。您可以在列表适配器中列出您的图像,并将 ViewHolder 用于图像和字幕。如果您正在加载大量图像,最重要的事情将是位图崩溃,因此您滚动的每个 tiem 都删除位图的缓存内存。

于 2013-07-10T07:22:29.880 回答