2013-03-04 15 views
5

Obecnie tworzę aplikację na Androida, która musi pokazywać półkę z książkami, w której zawiera maksymalnie 3 obrazy w każdym rzędzie. Używam do tego gridview. Ale utknąłem w jednym punkcie, w którym nie jestem w stanie zmienić tła całego rzędu w widoku siatki. czy ktoś może mi powiedzieć, jak to zrobić?Zmiana tła pojedynczego wiersza gridview w Androidzie

Adapter służy do 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> 

mam ustawić liczbę kolumn jako 3 w moim gridview deklaracji. Tutaj ustawiam tło w pliku xml jako android: background = "@ drawable/shelfimage". ale ustawia to tło dla każdego elementu oddzielnie ...... Chcę ustawić pojedynczy obraz jako tło dla każdego wiersza (posiadającego 3 elementy) ....

+0

Co masz na myśli jeden wiersz !! GridView zapewnia kliknięcie na jedną pozycję – Sameer

+2

Czy na pewno nie chcesz widoku listy z "3" elementami w każdym rzędzie? –

+0

Podaj kod – Shiv

Odpowiedz

1

Odpowiedź jest za to, co zrozumiałem dla pytanie.

JEŚLI w przypadku, używasz jakiegoś adaptera do widoku siatki, w klasie adaptera i metody getView sprawdź pozycję i ustaw kolor nadawanego layoutu. W metodzie getview klasy adapter bg widoku pompowania można zmienić dla określonych pozycji.

Jeśli zaimplementowano widok przy użyciu adaptera, działa logika.

+1

Dzięki za odpowiedź ... .z twoją logiką mogę zmienić tło pojedynczego elementu siatki .... ale muszę wiedzieć, czy jest jakikolwiek sposób umieścić tło dla jednego kompletnego wiersza w gridview .. – akh

+0

tak, to zależy od tego, jak zaprojektowałeś interfejs/wiersz. Jeśli wkleisz kod z pytaniem. to będzie pomocne. –

+0

Dołączyłem kod ... – akh

0

Myślę, że jedyną drogą do osiągnięcia tego celu jest ustawienie obrazu tła dla GridView, który powtarza się w kierunku pionowym (albo obu), przykładowy kod:

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