Probleme mit dem Onitemclick -Hörer
-
27-10-2019 - |
Frage
Ich habe gerade angefangen, mit Android herumzuspielen und habe ein Layout -Tutorial über das Anpassen eines ListView -Layouts dazu verfolgt Webseite.
Da alle Liste mit Arrays besiedelt und alle dieselbe ID -> (R.Id.ListViewID) haben, habe ich mich gefragt, wie ich einen Onitemclick -Hörer für jede einzelne Farbe implementieren kann? Ich versuche, eine Aktivität für jede Farbe zu erstellen, wie zum Beispiel, wenn ich auf Rot klicke, eine neue Aktivität startet und wenn ich auf Blau klicke, startet sie eine andere Aktivität usw.
Xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ListView
android:id="@+id/ListViewId"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
Java
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class ColorList extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String[] items = {"red", "blue","green"};
ListView listView = (ListView) findViewById(R.id.ListViewId);
listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items));
}
}
Das habe ich versucht ... aber ich kann nicht herausfinden, wie es geht ... irgendwelche Ideen? Bitte.
ListView listView = (ListView) findViewById(R.id.ListViewId);
listView.setAdapter(new UserItemAdapter(this, android.R.layout.simple_list_item_1, users));
listView.setTextFilterEnabled(true);
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int pos, long id){
// some code here to start a new activity
// the code below is just for testing, on click it will show a NullPointerException error
Object o = null;
o.toString();
}
});
Lösung
Ihr Onitemclick wird sowohl die Ansicht selbst als auch die Position innerhalb der Liste bereitgestellt. Sie müssen eine davon verwenden, um die gewünschten Informationen zu bestimmen. In Ihrem einfachen Beispiel beträgt die Position 0, 1 oder 2 für "rot", "blau" und "grün". In einem komplizierteren Beispiel können Sie die Erstellung der Ansicht in Ihrem Code überschreiben und Sie settag () verwenden, um Details anzuhängen, die Sie möglicherweise später benötigen (wenn die Position nicht ausreicht).
Andere Tipps
Du hast Object o = null; o.toString();
. Das gibt dir deinen Nullzeiger. Wenn Sie das loswerden, können Sie einen echten Code einsetzen.
Kasse Dieses Tutorial Wie man mit dem Click -Listener arbeitet.
Versuchen Sie, auf listitemclick zu hören, anstatt auf ONITEMCLICK.
Im onItemClick()
Verwenden Sie das View
Und den Text holen ...
String colourString = ((TextView) v).getText();