2016-06-01 12 views
0

Ich habe eine GridLayout, die eine LinearLayout in jeder Zelle enthält. Jetzt möchte ich die imageViews ändern, die innerhalb der linearlayouts sind, um jedes ein anderes Bild im Code und nicht im XML zu haben, damit es sich dynamisch ändert. Ich weiß nicht, wie ich das machen soll.Bearbeiten ImageView in einem anderen Layout

Wenn ich dies tun:

public class Testextends AppCompatActivity 
{ 
    ImageView item0,item1,item2,item3,item4,item5,item6,item7,item8,item9; 
    TextView itemDesc0, itemDesc1; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.inventorylayout); 

     item0 = (ImageView)findViewById(R.id.imageViewItem); 
     itemDesc0 = (TextView)findViewById(R.id.itemDesc); 
     item0.setImageResource(R.drawable.test); 
     itemDesc0.setText("test1"); 

     item1 = (ImageView)findViewById(R.id.item01); 
     itemDesc1 = (TextView)findViewById(R.id.itemDesc); 
     item1.setImageResource(R.drawable.test); 
     itemDesc1.setText("test2"); 
    } 
} 

Ich kann nur das erste Bild ändern und nicht die andere 9.

Hier ist die mainLayout

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:columnCount="3" 
    android:rowCount="3" 
    android:gravity="center" 
    android:useDefaultMargins="true" 
    android:layout_gravity="center_horizontal"> 

    <include layout="@layout/itemlayout" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/item01" 
     android:layout_row="0" 
     android:layout_column="0" /> 

    <include layout="@layout/itemlayout" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/item02" 
     android:layout_row="0" 
     android:layout_column="1" /> 

    <include layout="@layout/itemlayout" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/item03" 
     android:layout_row="0" 
     android:layout_column="2" /> 

    <include layout="@layout/itemlayout" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/item01" 
     android:layout_row="1" 
     android:layout_column="0" /> 

    <include layout="@layout/itemlayout" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/item02" 
     android:layout_row="1" 
     android:layout_column="1" /> 

    <include layout="@layout/itemlayout" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/item03" 
     android:layout_row="1" 
     android:layout_column="2" /> 

    <include layout="@layout/itemlayout" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/item01" 
     android:layout_row="2" 
     android:layout_column="0" /> 

    <include layout="@layout/itemlayout" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/item02" 
     android:layout_row="2" 
     android:layout_column="1" /> 

    <include layout="@layout/itemlayout" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/item03" 
     android:layout_row="2" 
     android:layout_column="2" /> 

</GridLayout> 

</LinearLayout> 

und hier ist die itemLayout

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" android:layout_width="match_parent" 
android:layout_height="match_parent"> 
<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/imageViewInvBack" 
    android:background="@mipmap/invplaceback" 
    android:layout_gravity="center" /> 

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/imageViewItem" 
    android:layout_alignTop="@id/imageViewInvBack" 
    android:layout_alignBottom="@id/imageViewInvBack" 
    android:layout_alignLeft="@id/imageViewInvBack" 
    android:layout_alignRight="@id/imageViewInvBack" 
    android:layout_gravity="center_horizontal" /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Test" 
    android:id="@+id/itemDesc" 
    android:gravity="center_vertical|center_horizontal" 
    android:layout_gravity="center" 
    android:layout_below="@+id/imageViewInvBack" 
    android:layout_alignParentStart="true" 
    android:layout_marginStart="28dp" /> 

+2

Sie haben es zu tun in getView Funktion des Adapters –

Antwort

1

Zuerst erhalten Sie einen Verweis auf Ihre enthaltene Ansicht mit findViewByid. Dann können Sie findViewById auf seinen untergeordneten Ansichten aufrufen, um einen Verweis auf eine Ansicht innerhalb des Layouts zu erhalten. So Ansicht zum Einstellen des ersten Layouts enthalten:

View myLayout1 = findViewById(R.id.item01);  
item0 = (ImageView)myLayout1.findViewById(R.id.imageViewItem); 
itemDesc0 = (TextView)myLayout1.findViewById(R.id.itemDesc); 
item0.setImageResource(R.drawable.test); 
itemDesc0.setText("test1"); 

Und zum Einstellen Ansichten von zweiten eingeschlossenen Layout:

View myLayout2 = findViewById(R.id.item02);  
item1 = (ImageView)myLayout2.findViewById(R.id.imageViewItem); 
itemDesc1 = (TextView)myLayout2.findViewById(R.id.itemDesc); 
item1.setImageResource(R.drawable.test); 
itemDesc1.setText("test2"); 

und so weiter ......

+0

Vielen Dank, das ist genau das, was ich will – Zeepblok

Verwandte Themen