Zeepblok
Zeepblok

Reputation: 133

Edit ImageView in another layout

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

Answers (1)

Talha Mir
Talha Mir

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

Related Questions