2017-01-19 43 views
0

我使用的那些代碼,使2x2的圖片GridLayout和它的作品,但有一個問題,每個ImageView具有相同的ID,-1,所以當我使用OnClick這是行不通的。我能做什麼?計劃ImageView的[] []隨着ID - 網格佈局

這裏的代碼

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