2013-04-10 13 views
5

Tworzę niestandardowy adapter tablicy, teraz chcę zaimplementować funkcję, która obsługuje klikanie widoku. Mam na myśli dwie opcje, ale zastanawiam się, czy istnieje różnica w wydajności/prędkości pracy czy coś takiego?Różnice w listview.setOnItemClickListener i row.setOnClickListener

Wariant 1, w arrayAdapter samego:

row.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 


      } 
     }); 

Opcji 2, od głównej działalności:

listView.setAdapter(adapter); 
     listView.setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
        long arg3) { 
       // TODO Auto-generated method stub 

      } 


     }); 

Albo są one dokładnie takie same?

Odpowiedz

5

A może są one dokładnie takie same?

W pierwszym podejściu utworzysz dla każdego wiersza własny detektor e.q. masz 100 wierszy, więc będziesz miał 100 słuchaczy, co wcale nie jest dobre. W drugim podejściu utworzysz jednego słuchacza dla całego ListView.

android.widget.AdapterView.OnItemClickListener 
android.view.View.OnClickListener 

Jak widać, pierwszy jest bardziej komfortowe i bezpośrednio przeznaczone do czynienia z widgetami adapter jak ListView jest. Również to podejście jest ogólnie zalecane i stosowane.

Masz połączenie z każdym wierszem za pomocą parametrów metody onItemClick(), a kod jest bardziej czytelny dla człowieka i jest bardziej przejrzysty.