2011-09-30 12 views
5

W mojej aplikacji mam galerię z niektórymi obrazami. Gdy użytkownik wybierze obraz, chcę jakoś odzyskać identyfikator wybranego obrazu.view.getId() zwraca nieprawidłowy identyfikator w OnItemClickListener

Wartość int, która jest zwracana przez getId(), wynosi -1. Dlaczego nie otrzymuję identyfikatora systemu dla wybranego obrazu?

gallery.setOnItemClickListener(new OnItemClickListener() { 
      @SuppressWarnings("rawtypes") 
      @Override 
      public void onItemClick(AdapterView parent, View v, int position, long id) { 
       int imageId = v.getId(); 
      } 
     }); 

Dzięki!

+0

nie u sprawdzane OnItemSelectedListener? – Venky

Odpowiedz

2

użycie tego

public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
     int imageId = ((ImageAdapter)parent.getAdapter()).mygetItemId(position); 

     } 
    }); 

w klasie adaptera dodać tę funkcję

public long getItemId(int position) { 
     return imagearray[position]; 
    } 
+0

Dziękuję, to działało idealnie! =) – plast

6

Zastosowanie OnItemSelectedListener zamiast OnItemClickListener

gallery.setOnItemSelectedListener(new OnItemSelectedListener(){ 

      @Override 
      public void onItemSelected(AdapterView<?> parent, View view,int pos, long id){ 
       // TODO Auto-generated method stub 
      } 

      @Override 
      public void onNothingSelected(AdapterView<?> arg0) { 
      // TODO Auto-generated method stub 

      } 
     }); 
Powiązane problemy