2011-12-04 145 views
1

我想在每個網格圖像下面顯示一些文本。android網格視圖每個網格下面的顯示標題

請參閱下面的代碼。 請幫我找到爲什麼它不能正常工作 我得到的圖像正確顯示,但沒有文字 如果我嘗試在圖像中顯示文本,它的即將到來 所以它應該是與定義的佈局的東西。但我不能夠調試

適配器代碼:

public View getView(final int position, View convertView, ViewGroup parent) { 
    ViewHolder holder; 

    if (convertView == null) { 
     LayoutInflater mInflater = (LayoutInflater) mContext 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = mInflater.inflate(R.layout.griditems, null); 
     holder = new ViewHolder(); 
    holder.text1 = (TextView) convertView 
       .findViewById(R.id.grid_item_text); 
    Log.i(TAG, holder.text1.toString()); 
     holder.image = (ImageView) convertView 
       .findViewById(R.id.grid_item_image); 


      // if it's not recycled, initialize some attributes 
      holder.image.setImageResource(gridItemIds[position]); 
      holder.text1.setText(gridTitles[position]); 
     //holder.image.setScaleType(ImageView.ScaleType.FIT_XY); 
     // holder.image.setPadding(20, 20, 20, 20); 

    convertView.setLayoutParams(new GridView.LayoutParams(Utils 
       .getLayoutParameter(), Utils.getLayoutParameter())); 

     holder.image.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View view) { 

      } 
     }); 
     convertView.setTag(holder); 
    } else { 

     holder = (ViewHolder) convertView.getTag(); 

    } 

    return convertView; 
} 

static class ViewHolder { 
    TextView text1; 
    ImageView image; 

} 



    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/GridItem" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" 
    android:gravity="center_horizontal" 
    > 

    <ImageView android:id="@+id/grid_item_image" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 
    </ImageView> 

    <TextView android:id="@+id/grid_item_text" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="TextView" 
     android:textColor="#000000" 
     > 
    </TextView> 

</LinearLayout> 

GridView控件:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 


     <TextView android:id="@+id/text1view" android:textStyle="bold" 
      android:layout_width="fill_parent" android:layout_height="wrap_content" 
      android:gravity="center_horizontal" android:background="@drawable/title_bar" 
      /> 

     <GridView xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/gridview" android:layout_width="fill_parent" 
      android:layout_height="fill_parent" android:verticalSpacing="50dip" 
      android:horizontalSpacing="10dp" android:numColumns="3" 
      android:stretchMode="columnWidth" 
      android:layout_below="@+id/text1view" 
         android:gravity="center" 
      android:layout_centerHorizontal="true" 
      android:background="@drawable/home_bg" 
         /> 


</LinearLayout> 
+0

您應該添加R.layout.griditems的代碼 – gwa

+0

我已經添加了兩個xml文件內容。謝謝 – png

+0

我添加了一個答案,我寫了另一個適配器(非常簡單),並使用您的佈局與固定的圖像,它的工作正確... – gwa

回答

0

我用了你的XML,但與我寫的,一切都簡單的數組適配器很好地工作,嘗試用我的替換你的適配器,讓我知道,謝謝。

class ItemsAdapter extends ArrayAdapter<String> { 

    public ItemsAdapter(Context context, List<String> list) { 
     super(context, R.layout.griditems, list); 
    } 

    @Override 
    public View getView(final int position, View row, final ViewGroup parent) { 
     final String item = getItem(position); 

     ItemWrapper wrapper = null; 
     if (row == null) { 
      row = getLayoutInflater().inflate(R.layout.griditems, parent, false); 
      wrapper = new ItemWrapper(row); 

      row.setTag(wrapper); 
     } else { 
      wrapper = (ItemWrapper) row.getTag(); 
     } 
     wrapper.refreshData(item); 

     return row; 
    } 

}  

static class ItemWrapper { 

    TextView text; 
    ImageView img; 

    public ItemWrapper(View row) { 
     text = (TextView) row.findViewById(R.id.grid_item_text); 
     img = (ImageView) row.findViewById(R.id.grid_item_image); 
    } 

    public void refreshData(String item) { 
     img.setImageResource(R.drawable.image_1); 
     text.setText(item); 
    } 

} 
0

同時嘗試使用RelativeLayout的太多,通過使用

android:layout_below="@id/grid_item_image" 

放置的TextView的ImageView的下面這將其放置在圖像下面,但是,如果你必須使用圖形佈局的選項,將其拖動到需要的位置並與圖像一起將爲您設置所有參數,而不是輸入它們。