2013-11-15 2 views
0

Мне нужно определить, какое нажатие сделало мое приложение. Я пробую много способов сделать это. Я генерирую объекты Imageview динамически из массива Integer и обнаруживаю, что одно изображение нажато, но не какое.Как я могу определить, какое изображение кликнуто?

Мне нужно поместить два ряда изображений, но мне нужно, чтобы движение этих изображений было одновременно, а не индивидуально. Я сделал horizontalScrollView с двумя макетами, один вертикальный один горизонтальный. Я поместил два изображения в вертикальном направлении и отправил этот макет горизонтальной компоновке через цикл для.

XML: 

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:id="@+id/layoutContenedor" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:paddingBottom="@dimen/activity_vertical_margin" 
     android:paddingLeft="@dimen/activity_horizontal_margin" 
     android:paddingRight="@dimen/activity_horizontal_margin" 
     android:paddingTop="@dimen/activity_vertical_margin" 
     tools:context=".MainActivity" > 

    <HorizontalScrollView 
    android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:scrollbars="none"> 

     <LinearLayout 
      android:id="@+id/linearLayoutHorizontal" 
      android:orientation="horizontal" 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

     </LinearLayout> 

    </HorizontalScrollView> 

    </LinearLayout> 

Моя активность:

public class MainActivity extends Activity implements OnClickListener{ 

    private LinearLayout layoutDinamicoHorizontal; 
    private LinearLayout layoutGlobal; 

    private Integer[] listaPeliculas = { R.drawable.android1, R.drawable.android2, 
      R.drawable.android3, R.drawable.android4, R.drawable.android5, R.drawable.android6, 
      R.drawable.android7, R.drawable.android8, R.drawable.android9, R.drawable.android10, 
      R.drawable.android11, R.drawable.android12, R.drawable.android13, R.drawable.android14, 
      R.drawable.android15, R.drawable.android16, R.drawable.android17, R.drawable.android18, 
      R.drawable.android19, R.drawable.android20, R.drawable.android21, R.drawable.android22, 
      R.drawable.android23, R.drawable.android24, R.drawable.android25, R.drawable.android26, 
      R.drawable.android27, R.drawable.android28, R.drawable.android29, R.drawable.android30}; 

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

     // layout in variable of LinearLayout type 
     layoutDinamicoHorizontal = (LinearLayout) findViewById(R.id.linearLayoutHorizontal); 
     layoutGlobal = (LinearLayout) findViewById(R.id.layoutContenedor); 


     layoutGlobal.setBackgroundResource(R.drawable.fondodepantallacarrusel); 

     // create ImageView 
     ImageView imageViewDinamicoArriba; 
     ImageView imageViewDinamicoAbajo; 

     for (int i = 0; i < 30; i = i+2){ 

      // Creamos a new object from ImageView class 
      imageViewDinamicoArriba = new ImageView(this); 
      imageViewDinamicoAbajo = new ImageView(this); 

      // padding to objects of ImageView class 
      imageViewDinamicoArriba.setPadding(10, 15, 10, 15); 
      imageViewDinamicoAbajo.setPadding(10, 15, 10, 15); 


      Drawable imagenArriba = getResources().getDrawable(listaPeliculas[i]); 
      Drawable imagenAbajo = getResources().getDrawable(listaPeliculas[i+1]); 

      // Se los pasamos a los objetos 
      imageViewDinamicoArriba.setImageDrawable(imagenArriba); 
        imageViewDinamicoAbajo.setImageDrawable(imagenAbajo); 



      LinearLayout vertical = new LinearLayout(this); 
        vertical.setOrientation(LinearLayout.VERTICAL); 

        // Añadimos las vistas al objeto vertical 
        vertical.addView(imageViewDinamicoArriba); 
        //vertical.setOnClickListener(this); 

        vertical.addView(imageViewDinamicoAbajo); 

      vertical.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 

        // I Tryed with every metods of View 
        Log.i("galeria", "Imagen: " + v.getId()); 


       } 
      }); 


        // Add vertical Layout to horizontal Layout 
      layoutDinamicoHorizontal.addView(vertical); 
     } // End for   
    } // End onCreate 

     @Override 
     public void onClick(View v) { 

     } 

     } // End Activity 
+0

Добавить идентификатор для каждого изображения, добавляемого динамически в java –

ответ

0

imageViewDinamicoArriba.setTag(new Integer(i)) или imageViewDinamicoAbajo.setTag(new Integer(i))

Тогда вы получите ваш индекс в вашем Log.i("galeria", "Imagen: " + v.getTag());

int index = (Integer) v.getTag();

0

Когда ты создайте представление динамически, идентификатор не добавляется по умолчанию. Если вы хотите использовать идентификаторы для фильтрации следует добавить идентификатор вручную:

imageViewDinamicoArriba.setId(i); 

Для получения дополнительной информации View setId method documentation.

Надеюсь, это поможет.

Смежные вопросы