2013-03-04 17 views
5

Tôi hiện đang phát triển ứng dụng Android cần hiển thị giá sách nơi chứa tối đa 3 hình ảnh trong mỗi hàng. Tôi đang sử dụng GridView cho điều đó. Nhưng tôi bị kẹt ở một điểm mà tôi không thể thay đổi nền của toàn bộ hàng trong GridView. bất cứ ai có thể cho tôi biết làm thế nào để làm điều này?Thay đổi nền của một hàng lưới xem trong android

Các bộ chuyển đổi sử dụng cho 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> 

tôi đã thiết lập số cột như 3 trong khai GridView của tôi. Ở đây tôi đang thiết lập nền trong tệp xml là android: background = "@ drawable/shelfimage". nhưng nó được thiết lập nền cho từng mục riêng biệt ...... Tôi muốn đặt một hình ảnh làm nền cho mỗi hàng (có 3 mục) ....

+0

không muốn nói gì hàng duy nhất !! GridView cung cấp nhấp chuột vào một mục – Sameer

+2

Bạn có chắc chắn bạn không muốn chế độ xem danh sách có các mục "3" trên mỗi hàng không? –

+0

cung cấp một số mã – Shiv

Trả lời

1

Câu trả lời là cho những gì tôi đã hiểu bạn hỏi.

Nếu trong trường hợp này, bạn đang sử dụng một số bộ chuyển đổi cho GridView, trong lớp bộ điều hợp và phương thức getView kiểm tra vị trí và đặt màu cho bố cục mà bạn đang tăng. Trong phương thức getview của lớp adapter, bg của chế độ xem thổi phồng có thể được thay đổi cho các vị trí cụ thể.

Nếu bạn đã triển khai chế độ xem bằng cách sử dụng bộ điều hợp, logic hoạt động.

+1

Cảm ơn bạn đã trả lời ... .với logic của bạn, tôi có thể thay đổi nền của mục lưới riêng lẻ .... nhưng tôi cần biết liệu có cách nào để đặt nền cho một hàng hoàn chỉnh trong chế độ xem lưới hay không .. – akh

+0

vâng, nó phụ thuộc vào cách bạn thiết kế giao diện người dùng/hàng. Nếu bạn dán mã của bạn với câu hỏi. nó sẽ hữu ích. –

+0

Tôi đã bao gồm mã ... – akh

2

bạn có thể xem ví dụ this nó sẽ giúp ích cho bạn.

0

Tôi nghĩ rằng cách duy nhất để đạt được điều này là bằng cách thiết lập hình nền cho GridView lặp lại theo hướng thẳng đứng (hoặc có thể một trong hai), một mẫu mã:

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