在另一个布局中编辑ImageView

时间:2016-06-01 13:10:18

标签: android android-layout imageview

我有一个Key: tag1, Value: text1 Key: tag2, Value: text2 ,其中包含每个单元格中的GridLayout。现在,我想更改LinearLayout内的imageViews,使每个代码在代码中都有不同的图片,而不是linearlayouts,以便动态更改。我不知道该怎么做。

如果我这样做:

XML

我只能更改第一张图片,而不能更改其他图片。

这是mainLayout

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");
    }
}

这是itemLayout

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

1 个答案:

答案 0 :(得分:1)

首先使用findViewByid获取对包含的View的引用。然后你可以在它的子视图上调用findViewById来获取对布局内View的引用。因此,设置第一个包含布局的视图:

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");

用于设置第二个包含布局的视图:

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");

依旧......