2013-03-04 5 views
5

Attualmente sto sviluppando un'applicazione Android che deve mostrare una libreria in cui contiene al massimo 3 immagini in ogni riga. Sto usando gridview per quello. Ma sono bloccato in un punto in cui non sono in grado di modificare lo sfondo di un'intera riga in griglia. Qualcuno può dirmi come farlo?Modifica dello sfondo di una singola riga di gridview in Android

L'adattatore utilizzato per 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> 

ho impostare il numero di colonne da 3 a mio dichiarazione GridView. Qui sto impostando lo sfondo nel file xml come android: background = "@ drawable/shelfimage". ma sta impostando quello sfondo per ogni elemento separatamente ...... Voglio impostare una singola immagine come sfondo per ogni riga (con 3 articoli) ....

+0

Che cosa vuoi dire singola riga !! GridView fornisce clic su un elemento – Sameer

+2

Sei sicuro di non voler visualizzare una lista con "3" elementi su ogni riga? –

+0

fornire un codice – Shiv

risposta

1

La risposta è per ciò che ho capito per domanda.

SE nel caso di, si sta utilizzando un adattatore per gridview, nella classe adattatore e il metodo getView controllare la posizione e impostare il colore sul layout che si sta gonfiando. Nel metodo getview della classe dell'adattatore, la bg della visualizzazione di gonfiaggio può essere modificata per posizioni specifiche.

Se la vista è stata implementata utilizzando l'adattatore, la logica funziona.

+1

Grazie per la risposta ... Con la tua logica posso cambiare lo sfondo del singolo elemento della griglia .... ma ho bisogno di sapere se c'è un modo per mettere uno sfondo per una riga completa in gridview .. – akh

+0

sì, dipende dal modo in cui hai progettato l'interfaccia utente/la riga. Se si incolla il codice con una domanda. sarà utile. –

+0

Ho incluso il codice ... – akh

2

si può guardare this esempio ti aiuterà.

0

Credo che l'unico modo per raggiungere questo obiettivo è immagine di sfondo impostazione di GridView che si ripete in senso verticale (o forse entrambi), un codice di esempio:

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