Witaj Sieciowy Szperaczu :)
Wiedz, że nie znajdziesz tutaj kodów źródłowych ani poradników jak kodzić dobre i przemyślane aplikacje na Androida.

Za to zobaczysz moje wolne przemyślenia, porady i pomysły. Dowiesz się też z czym miałem problemy, które napotkałem podczas swojej przygody z 'Andkiem' oraz, co ważniejsze, ich rozwiązania.

sobota, 18 czerwca 2011

OnItemClick czy OnItemSelected ?



No właśnie, jak to jest z tymi dwiema metodami?
  • OnItemClick 
  • OnItemSelected
Obie nadpisujemy implementując ich interfejsy (OnItemClickListener i OnItemSelectedListener)
OnItemClick możemy napisać w ten sposób:

1
2
3
4
5
6
7
8
OnItemClickListener onItemClickListener = new OnItemClickListener() {
  @Override
  public void onItemClick(AdapterView<?> parent, View view, int position,
    long itemId) {
   ((TextView)findViewById(R.id.selection)).setText("Wybrales - "+items[position]);
   
  }
 };

OnItemSelected z kolei tak:

1
2
3
4
5
6
7
8
9
10
11
12
13
OnItemSelectedListener onItemSelectedListener = new OnItemSelectedListener() {

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position,
        long itemId) {      
      ((TextView)findViewById(R.id.selection)).setText("Wybrales - "+items[position]);
    }

    @Override
    public void onNothingSelected(AdapterView<?> parent) {
      ((TextView)findViewById(R.id.selection)).setText("Nic nie wybrales");
    }
  };

I teraz pytanie: która z tych metod zostanie kiedy 'uruchomiona'?


czytając 'Android: Beginning 2' w przykładach znajdujemy użycie 'onItemSelected' np. na Grid'zie, aby coś zrobić po dotknięciu elementu w siatce. To nie zadziała. Po części.

Kiedy dotykamy elementu zostaje wywołana metoda 'onItemClick', bo jest to kliknięcie, a nie zaznaczenie.

Aby dostać się do 'onItemSelected' musimy element zaznaczyć, użyć np. trackball'a, którego dodaje HTC do niektórych modeli telefonów, nie wiem jak jest z 'selectowaniem' na innych urządzeniach. w inny sposób nie udało mi się wywołać tej metody dotykając ekranu.

Brak komentarzy:

Prześlij komentarz