2013-03-04 9 views
5

Ich entwickle derzeit eine Android-Anwendung, die ein Bücherregal zeigen muss, wo es maximal 3 Bilder in jeder Zeile enthält. Ich verwende Gridview dafür. Aber ich stecke an einem Punkt fest, wo ich den Hintergrund einer ganzen Reihe in der Gridview nicht ändern kann. kann mir jemand sagen, wie man das macht?Ändern Hintergrund einer einzelnen Zeile von gridview in Android

Der Adapter für gridview

verwendet
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> 

Ich habe die Anzahl der Spalten als 3 in meiner Gridview Erklärung gesetzt. Hier setze ich den Hintergrund in der xml Datei als android: background = "@ drawable/shelfimage". aber ich setze diesen Hintergrund für jeden Gegenstand einzeln ...... Ich möchte ein einzelnes Bild als Hintergrund für jede Reihe (mit 3 Gegenständen) einstellen ....

+0

Was bedeuten Sie einreihige !! GridView bietet einen Klick auf einen Artikel – Sameer

+2

Sind Sie sicher, dass Sie keine Listenansicht mit "3" Elementen in jeder Zeile möchten? –

+0

geben Sie einen Code – Shiv

Antwort

1

Die Antwort ist für was ich verstanden habe du fragst.

Wenn Sie im Fall von, verwenden Sie einen Adapter für Gridview, überprüfen Sie in der Adapterklasse und getView-Methode die Position und legen Sie die Farbe auf das Layout, das Sie aufblasen. In der Adapterklassen-Getview-Methode kann das bg der Aufblasansicht für bestimmte Positionen geändert werden.

Wenn Sie die Ansicht mit Adapter implementiert haben, funktioniert die Logik.

+1

Vielen Dank für Ihre Antwort ... .mit Ihrer Logik kann ich den Hintergrund des einzelnen Rasterelements ändern .... aber ich muss wissen, ob es einen Weg gibt, einen Hintergrund für eine komplette Zeile in Rasteransicht zu setzen. – akh

+0

ja, es hängt davon ab, wie Sie entworfen haben die Benutzeroberfläche/die Zeile. Wenn Sie Ihren Code mit Frage einfügen. es wird hilfreich sein. –

+0

Ich habe den Code eingefügt ... – akh

2

können Sie schauen this Beispiel wird es Ihnen helfen.

0

Ich denke, die einzige Möglichkeit, dies zu erreichen, ist durch für gridview Hintergrundbild einstellen, die in vertikaler Richtung wiederholt (oder vielleicht entweder), einen Beispielcode:

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