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();
          }
      });
War es hilfreich?

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();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top