2013-04-10 6 views
5

Ich erstelle einen benutzerdefinierten Array-Adapter, ich möchte jetzt eine Funktion implementieren, die das Klicken auf die Ansicht behandelt. Ich habe zwei Optionen im Hinterkopf, aber ich frage mich, ob es einen Unterschied in der Leistung/Arbeitsgeschwindigkeit oder etwas gibt?Unterschied in listview.setOnItemClickListener und row.setOnClickListener

Option 1, in der arrayAdapter selbst:

row.setOnClickListener(new OnClickListener() { 

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


      } 
     }); 

Option 2, vom Hauptaktivität:

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

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

      } 


     }); 

Oder sind sie genau das gleiche?

Antwort

5

Oder sind sie genau das Gleiche?

Im ersten Ansatz erstellen Sie für jede Zeile eigene Listener e.q. Sie haben 100 Zeilen, also haben Sie 100 Listener, die überhaupt nicht gut sind. Im zweiten Ansatz erstellen Sie einen Listener für die gesamte ListView. Wie Sie sehen können, ist erstens bequemer und direkt für den Umgang mit Adapter Widgets wie ListView bestimmt ist. Auch dieser Ansatz wird allgemein empfohlen und verwendet.

Sie haben Verbindung mit jeder Zeile über Parameter der Methode onItemClick() und Code ist menschlicher lesbar und es ist klarer.