ListView генерирует исключение NULL Pointer - PullRequest
1 голос
/ 01 ноября 2011

прочитайте много вопросов о NPE ... все еще в неведении.

Я объявляю просмотр списка:

public class SelecteerKernen extends Activity {


protected WoordData kerndata;
public ListView listView = null;

Позже я заполняю его данными из базы данных SQLite.Это работает.

// Fill Listview with the kern-names        
    ListView listView = (ListView) findViewById(R.id.kernenlist);
    listView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_multiple_choice, al));

Но затем, когда я хочу посчитать элементы, чтобы сохранить отмеченные элементы в настройках, я получаю NPE в строке int count = ... этого кода.

Редактировать Я решил строку count .., теперь строка if (this.listView) ... выбрасывает NPE .. Argh!:

    private String getSavedItems() {
    String savedItems = "";

    int count = this.listView.getAdapter().getCount();

    for (int i = 0; i < count; i++) {

    //edit now THIS line trows the NPE :
            if (this.listView.isItemChecked(i)) {

            if (savedItems.length() > 0) {
                savedItems += "," + this.listView.getItemAtPosition(i);
            } else {
                savedItems += this.listView.getItemAtPosition(i);
            }
        }

    }
    return savedItems;

Спасибо за помощь !!


PS.Я заметил, что пользователи просят LogCats.Как это может помочь найти ошибку?Вот мое:

11-01 19: 42: 35.680: W / dalvikvm (28146): threadid = 1: поток, выходящий с необработанным исключением (группа = 0x40015560) 11-01 19: 42: 35.700: E / AndroidRuntime (28146): ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основное 11-01 19: 42: 35.700: E / AndroidRuntime (28146): java.lang.NullPointerException 11-01 19: 42: 35.700: E / AndroidRuntime (28146): вhappyworx.nl.Flitswoorden.SelecteerKernen.getSavedItems (SelecteerKernen.java:163) 11-01 19:42-01 19: 42: 35.700: E / AndroidRuntime (28146): at happyworx.nl.Flitswoorden.SelecteerKernen.access $ 0 (SelecteerKernen.java:115) 11-01 19: 42: 35.700: E / AndroidRuntime (28146): вhappyworx.nl.Flitswoorden.SelecteerKernen $ 1.onClick (SelecteerKernen.java:72) ...

1 Ответ

1 голос
/ 02 ноября 2011

Woooops!Итак ... Я изменил строку

ListView listview = (ListView) findViewById(R.id.kernenlist);

на

this.listView = (ListView) findViewById(R.id.kernenlist);

.. И теперь это работает!:)

По-видимому, используя первую строку, я объявил новую локальную переменную, оставив публичную переменную равной NULL ??Не уверен, может быть, вы можете прокомментировать это?

...