2013-07-10 18 views
0

我一直在努力自定義這樣一個可以在gridview(圖像)中包含其他類型的視圖。我想實現下面的佈局,但在通用圖像加載程序中它只顯示圖像。任何這方面的經驗?Android - ImageView與通用圖像加載器中的另一個視圖

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> 

的Java

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

你的代碼似乎工作因爲我已經實現了這樣一個。你面臨什麼問題? –

+0

ViewHolder無法解析爲某種類型,並且我沒有得到上面的佈局示例。 – rahstame

+0

粘貼您的視圖持有人類 –

回答

2

ViewHolder是一個自定義類,這是不是Android SDK中的一部分。它擁有其他視圖,如TextView,ImageView等等。這個類可以在使用Adapter的ListView中使用。 Read More瞭解更多關於Holder的信息。

正如你有佈局,以下可以是你的ViewHolder類結構。

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

你可以看到,有TextViewViewHolderImageView。您需要定義如custom_list_item佈局所具有的許多視圖。

讀 - >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> 
+0

感謝主席先生,您還可以幫助我形成我上面添加的佈局嗎? – rahstame

+0

你的意思是你顯示的圖像有問題? –

+0

是的,我想要那個佈局.. :) – rahstame

0

您好通用圖像裝載機是用於像冊視圖的示例。爲了達到上述佈局。您需要查看Holder類和適配器,, LIstadapter。您可以在列表適配器中列出您的圖像,並將ViewHolder用於圖像和字幕。 如果您正在加載大量圖像,則MosT重要的事情將是位圖崩潰,因此您滾動的每個圖像都會刪除位圖的高速緩存存儲器。

+0

感謝您的回答。 – rahstame

相關問題