Reputation: 133
I have a GridLayout
which includes a LinearLayout
in each cell. Now I want to change the imageViews
that are inside the linearlayouts
to each have a different picture in the code and not in the XML
so that it changes dynamically. I don't know how to do this.
If I do this:
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");
}
}
I can only change the first image and not the other 9.
Here is the 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>
and here is the 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" />
Upvotes: 0
Views: 1428
Reputation: 1258
First get a reference to your included View using findViewByid. Then you can call findViewById on it's child Views to get a reference to a View inside the layout. So for setting view of first included layout:
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");
And for setting views of second included 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");
And so on......
Upvotes: 1