2010-12-09 6 views
2

Ich entwickle eine SoundBoard-Anwendung. Meine Klasse erweitert ListActivity und die Listenansicht ist wie folgtAndroid: Holen Sie sich die TextView in OnItemClickListener() von ListView

[Image] [Text] 
[Image] [Text] 
[Image] [Text] 

Nun, wenn der Benutzer klickt auf jedem Textview, ich brauche das Bild dieser Textview zu ändern. Ich implementiere das mit dem folgenden Code.

public void onItemClick(AdapterView<?> parent, View view, 
      int position, long id) { 

TextView tv1 = (TextView) view; 
//Here I change the image with tv1 as reference 
} 

Aber ich brauche eine alternative Möglichkeit, die ausgewählte Textview zu erhalten. Wenn ich das Bild mit der obigen Methode ändere, wenn der Benutzer die dritte Zeile in der Liste auswählt, wird das Bild in der dritten Zeile der zweiten Bildlaufseite geändert, die dritte Zeile der dritten Bildlaufseite und so weiter erforderliche Textansichtsbildänderungen, aber eine Textansicht in den nächsten Bildlaufseiten wird geändert, wenn die Liste gescrollt wird. Hoffe, du bekommst mein Problem. Jede Hilfe wird geschätzt. Dank

Antwort

1

Ich denke, das Verhalten, das Sie sehen, kommt aus der Tatsache, dass Android die in der ListView verwendeten TextViews wiederverwendet; deshalb hat Adapter.getView() ein convertView Argument. (Sobald ein Textview aus dem Bildschirm gescrollt, kann es in Adapter.getView() über das convertView Argument übergeben werden, für ein Element wiederverwendet werden, die auf das Display gescrollt worden ist.)

Sie könnten versuchen, eine android.widget.AbsListView.OnScrollListener an die Listview-Zugabe , um zu verfolgen, welche Elemente in der Liste zu einem bestimmten Zeitpunkt auf dem Bildschirm angezeigt werden. Sie müssen wahrscheinlich auch Adapter.getView() überschreiben, um das Bild auf den Standardwert zurückzusetzen (oder allgemeiner, das Bild zu verwenden, das für das neu angezeigte Objekt geeignet ist.)

+0

Können Sie mir bitte mit dem Code helfen. Weil ich ein Neuling bin. Und es klingt komplex für mich. Danke für deine Antwort. – Vivek

+0

Ich denke nicht, dass es schwer sein sollte zu schreiben, aber ich würde Ihren Code nicht gut genug wissen, um zu wissen, wo ich anfangen soll. Gib dein Bestes, und wenn du Probleme hast, poste den Code hier (oder in einer anderen Frage). –

0

ich mich selbst nicht getestet haben Sie in Textview durch Hinzufügen onClck Attribut kann versuchen
<android :onclick="name of function>

Cheers, Kariyachan

+0

Vielen Dank für Ihre Antwort. Das klingt nach einer guten Idee. Aber wie bekomme ich den Verweis auf die Textansicht in der Funktion? Sollte die Funktion Parameter enthalten? – Vivek

+0

Ja. Zum Beispiel myfunction (View v) dann können Sie ID von Textview angeklickt von fn getId() tun Sie Ihre Sachen Prost, Kariyachan – DroidBot

+0

Können Sie mir bitte mit dem Code helfen. Damit ich eine bessere Idee habe. Vielen Dank. – Vivek