2017-01-19 11 views
0

私はGridLayout2x2の画像を作るために、これらのコードを使用し、それが動作しますが、一つの問題があり、各ImageViewは同じIDを持ち、-1ので、私はOnClickを使用する場合それは動作しません。私に何ができる?ここではコードプログラムImageViewのは、[] [] IDで - GridLayoutの

activity_main.xml:

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools"  
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/gridLayout" 
    tools:context=".MainActivity" 
    android:orientation="horizontal" 
    android:columnCount="2" 
    android:rowCount="2" /> 

MainActivity.java:

public class MainActivity extends Activity { 

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

     GridLayout gridLayout = (GridLayout) findViewById(R.id.gridView); 

     ImageView[][] imageViews = new ImageView[2][2]; 

     for (int i=0;i<2;i++){ 
      for (int j=0;j<2;j++){ 
       imageViews[i][j] = new ImageView(MainActivity.this); 
       imageViews[i][j].setImageResource(R.mipmap.ic_launcher); 
       gridLayout.addView(imageViews[i][j]); 
      } 
     } 
    } 
} 
+0

どのようにあなたが 'onClick'イベントを処理しますか?あなたが何を意味するのですか?*うまくいかない*。 –

+0

IDを手動で設定する必要があると思います。 http://stackoverflow.com/questions/1714297/android-view-setidint-id-programmatically-how-to-avoid-id-conflicts –

+0

なぜ私は 'RecyclerView'や' GridView'を使わないのだろうと思っています。 ? –

答えて

0

あなたのビューIDが唯一の正の整数である必要があり、そう設定することができますそれらは次のようになります:

imageViews[i][j].setId(100); // or whatever you prefer 

か、programmaticalyクリックリスナーを設定できます

// Create the click listener 
View.OnClickListener clickListener = new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     // do what you want 
    } 
}; 

for (int i=0;i<2;i++){ 
    for (int j=0;j<2;j++){ 
     imageViews[i][j] = new ImageView(MainActivity.this); 
     imageViews[i][j].setImageResource(R.mipmap.ic_launcher); 
     imageViews[i][j].setOnClickListener(clickListener); 
     gridLayout.addView(imageViews[i][j]); 
    } 
} 
関連する問題