2017-01-19 7 views
0

Я использовал эти символы, чтобы сделать 2х2 Image на GridLayout и она работает, но есть одна проблема, каждый ImageView имеет тот же идентификатор, -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

Ваши идентификаторы вид нужно только целые положительные числа, так что можно было установить их вот так:

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