2013-03-04 23 views
5

我目前正在開發一個android應用程序,它需要顯示一個書架,其中每行最多包含3個圖像。我爲此使用了gridview。但我卡在一個點,我無法改變gridview中整行的背景。誰能告訴我如何做到這一點?在android中更改gridview的單行背景

用於gridview的

private class SampleGridAdapter extends BaseAdapter{ 

    private Context context; 
    private int[] images = {"R.drawable.img1","R.drawable.img2","R.drawable.img3","R.drawable.img4","R.drawable.img5","R.drawable.img6","R.drawable.img7"}; 
    public SampleGridAdapter(Context context) { 
     super(); 
     this.context = context; 

    } 
    @Override 
    public int getCount() { 
     // TODO Auto-generated method stub 
     return images.length; 
    } 
    @Override 
    public Object getItem(int arg0) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    @Override 
    public long getItemId(int arg0) { 
     // TODO Auto-generated method stub 
     return 0; 
    } 

    @Override 
    public View getView(int arg0, View arg1, ViewGroup arg2) { 
     // TODO Auto-generated method stub 

     View v = null; 
     ImageView coverImageView; 

     LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

      v = inflater.inflate(R.layout.bookgrid, null); 
      coverImageView = (ImageView) v.findViewById(R.id.coverImageView); 
      coverImageView.setImageResource(images[position]); 


      coverImageView.setScaleType(ImageView.ScaleType.FIT_XY); 

     return v; 
    } 
} 

bookgrid.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@drawable/shelfimage" > 

<ImageView 
    android:id="@+id/coverImageView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:paddingBottom="0dp" 
    android:paddingLeft="25dp" 
    android:paddingTop="6dp" 
    android:src="@drawable/ic_launcher" /> 
</RelativeLayout> 

適配器我在GridView的聲明設置列數爲3。在這裏,我將xml文件的背景設置爲android:background =「@ drawable/shelfimage」。但它是爲每個項目分別設置背景......我想爲每一行設置單個圖像作爲背景(有3個項目)....

+0

什麼是你的意思是單列! GridView提供點擊一個項目 – Sameer 2013-03-04 08:38:59

+2

你確定你不想在每一行上使用「3」項的列表視圖嗎? – 2013-03-04 08:50:03

+0

提供了一些代碼 – Shiv 2013-03-04 09:01:22

回答

1

答案是爲我瞭解的內容你的問題。

如果您正在使用某個適配器進行gridview,請在適配器類和getView方法中檢查位置並將顏色設置爲您正在充氣的佈局。在適配器類getview方法中,可以爲特定位置更改膨脹視圖的bg。

如果您已經使用適配器實現了該視圖,則該邏輯起作用。

+1

感謝您的回覆... .with你的邏輯我可以改變個別網格項目的背景....但我需要知道是否有任何方法可以在gridview中爲一個完整的行添加背景.. – akh 2013-03-04 09:23:16

+0

是的,這取決於你如何設計UI /行。如果你粘貼你的代碼與問題。這將是有益的。 – 2013-03-04 10:06:05

+0

我已經包含了代碼... – akh 2013-03-04 10:36:07

0

我認爲實現這一目標的唯一途徑是通過gridview的是,在垂直方向(或者要麼)重複設置背景圖片,樣本代碼:

Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.bg_image); 
BitmapDrawable bitmapDrawable = new BitmapDrawable(bmp); 
bitmapDrawable.setTileModeXY(TileMode.REPEAT, TileMode.REPEAT); 
gridView.setBackgroundDrawable(bitmapDrawable); 
相關問題