Wie behandeln Sie das click-Ereignis in der Listview in android?
Die unten ist mein Test-code zur Erstellung der Listen-Ansicht die Listen-Ansicht anzeigen erfolgreich, jedoch gibt es Fehler im click-Ereignis. Ich würde gern eine Absicht senden Sie eine Nachricht fest, um eine neue Aktivität. Jedoch, es zeigt Fehler für die Zeile
Intent intent = new Intent(context, SendMessage.class);
So , das problem ist , was soll ich für diese Klasse?
Auch , statt hart codieren die Ausgabe-Nachricht, wie erfassen Sie die Daten in der Listen-Ansicht Zeilen-und pass auf die neue Tätigkeit? z.B. BBB,AAA,R.drawable.tab1_hdpi
für die erste Zeile.
Dank.
public class MainActivity extends Activity {
public final static String EXTRA_MESSAGE = "com.example.ListViewTest.MESSAGE";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayList<ListEntry> members = new ArrayList<ListEntry>();
members.add(new ListEntry("BBB","AAA",R.drawable.tab1_hdpi));
members.add(new ListEntry("ccc","ddd",R.drawable.tab2_hdpi));
members.add(new ListEntry("assa","cxv",R.drawable.tab3_hdpi));
members.add(new ListEntry("BcxsadvBB","AcxdxvAA"));
members.add(new ListEntry("BcxvadsBB","AcxzvAA"));
members.add(new ListEntry("BcxvBB","AcxvAA"));
members.add(new ListEntry("BvBB","AcxsvAA"));
members.add(new ListEntry("BcxvBB","AcxsvzAA"));
members.add(new ListEntry("Bcxadv","AcsxvAA"));
members.add(new ListEntry("BcxcxB","AcxsvAA"));
ListView lv = (ListView)findViewById(R.id.listView1);
Log.i("testTag","before start adapter");
StringArrayAdapter ad = new StringArrayAdapter (members,this);
Log.i("testTag","after start adapter");
Log.i("testTag","set adapter");
lv.setAdapter(ad);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
Intent intent = new Intent(context, SendMessage.class);
String message = "abc";
intent.putExtra(EXTRA_MESSAGE, message);
startActivity(intent);
}
});
}
InformationsquelleAutor der Frage user782104 | 2013-07-25
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann ich nicht sehen, wo Sie erklären
context
. Für den Zweck, die Absicht der Schöpfung, die Sie verwenden könnenMainActivity.this
Abrufen des Objekts, auf das Sie geklickt haben, können Sie die
AdapterView
:InformationsquelleAutor der Antwort Blackbelt
ListView hat das Element, klicken Sie auf listener-callback. Sie sollten die
onItemClickListener
imListView
. Callback enthältAdapterView
undposition
als parameter. Was kann Ihnen dieListEntry
.InformationsquelleAutor der Antwort Kapil Vats
Fehler kommt in deinem code aus dieser Erklärung, wie Sie sagte
Dies ist aufgrund Sie den Kontext von OnItemClickListener anonyme Klasse in der Intent-Konstruktor, sondern nach Konstruktor des Intent
Geben Sie Kontext, die Sie die Aktivität, in der Sie mit Absicht, dass ist der MainActivity-Klasse Rahmen. also deine Aussage, das gibt Fehler umgewandelt werden
Auch für das senden Ihrer Nachricht von dieser MainActivity SendMessage der Klasse finden Sie unter code
Bitte lassen Sie mich wissen, wenn dies Ihnen hilft,
EDIT:-
Wenn Sie finden, einige Frage, um den Wert der Liste eine Sache zu tun declear der array-Liste
Global, D. H. vor der oncreate und ändern Sie Ihre Zuhörer, wie unten
Also Ihre ganze code Aussehen, als
Wo getMessage() wird eine get-Methode angegeben, die in Ihrer Klasse ListEntry, die Sie verwenden, um Nachricht, die vorher festgelegt wurde.
InformationsquelleAutor der Antwort Abhinav Singh Maurya
Zuerst muss die Klasse implementiert die auf listenener :
Dann einen listener für das ListView -
Und schließlich wird die clic-Methode:
InformationsquelleAutor der Antwort Avinash Garg
InformationsquelleAutor der Antwort Rijul Sudhir
Laut meinem test,
implements OnItemClickListener -> funktioniert.
setOnItemClickListener -> funktioniert.
ListView anklickbar ist standardmäßig (API 19)
Wichtig ist, dass der "Klick" funktioniert nur bis zu TextView (wenn Sie wählen simple_list_item_1.xml als item). Das bedeutet, dass, wenn Sie text-Daten für die ListView, "klicken" funktioniert, wenn Sie auf text-Bereich. Klicken Sie auf einen leeren Bereich nicht auslösen "Klickereignis".
InformationsquelleAutor der Antwort Chaohsiung Huang