2016-06-01 10 views
0

私はGridLayoutを持っています。これは各セルにLinearLayoutを含んでいます。今度は、linearlayoutsの中にあるimageViewsを、コード内で異なる画像を持つように変更し、XMLに変更して、動的に変更します。私はこれをする方法を知らない。別のレイアウトでImageViewを編集

私はこれを行う場合:

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

を私はここで他の9

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

であり、ここで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

アダプタのgetView機能 –

答えて

1

まず、findViewByidを使用して、あなたのインクルードビューへの参照を取得します。次に、子ビューのfindViewByIdを呼び出して、レイアウト内のビューへの参照を取得できます。だから、最初のビューを設定するためのレイアウトが含まれていました。

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

との見解を設定するためには、第2のレイアウトが含まれて:あなたはそれをしなければならない

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

などなど......

+0

ありがとう、ちょうど私がしたいことthats – Zeepblok

関連する問題