проблемы со слушателем onItemClick - PullRequest
0 голосов
/ 14 июня 2011

Я только начал играть с android, и я следовал учебному пособию по настройке макета ListView на этом веб-сайте .

Поскольку весь список заполняется с использованием массивов и все имеют один и тот же идентификатор -> (R.id.ListViewId), мне было интересно, как мне реализовать слушатель onItemClick для каждого отдельного цвета?Я пытаюсь создать действие для каждого цвета, как, например, если я нажму на красный, он начнет новое действие, а если я нажму на синий, он начнет другое действие и т. Д.

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));
    }
}

Это то, что я пробовал ... но я не могу понять, каксделать это ... есть идеи?Пожалуйста.

        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();
          }
      });

Ответы [ 4 ]

2 голосов
/ 14 июня 2011

У вас есть Object o = null; o.toString();.Это дает вам ваш нулевой указатель.Избавьтесь от этого, и вы сможете вставить некоторый реальный код.

Ознакомьтесь с этим руководством о том, как работать со слушателем щелчков.

0 голосов
/ 14 июня 2011

В onItemClick() используйте View и получите текст ...

String colourString = ((TextView) v).getText();
0 голосов
/ 14 июня 2011

Попробуйте прослушать onListItemClick вместо onItemClick.

0 голосов
/ 14 июня 2011

Ваш onItemClick предоставляет как сам вид, так и позицию в списке;Вы должны использовать один из них, чтобы определить информацию, которую вы хотите.В вашем простом примере позиция будет 0, 1 или 2 для «красного», «синего» и «зеленого».В более сложном примере вы можете переопределить создание представления в вашем коде и использовать setTag (), чтобы прикрепить детали, которые вам могут понадобиться позже (если позиция не достаточна).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...