Как заполнить дочернее представление ViewFlipper с ListView? - PullRequest
0 голосов
/ 03 августа 2010

Я пытаюсь настроить ViewFlipper, который изменяет содержимое SlidingDrawers при каждом нажатии кнопки. До сих пор каждое настроенное мной представление работало нормально, но сейчас я пытаюсь создать ListView (включая single_choice_mode) в дочернем представлении ViewFlipper, но моя попытка только допускает исключение NullPointerException. Поскольку я обнаружил только ViewFlipper сегодня, я еще не знаком с ним и, возможно, не понял его полностью ... если бы кто-то мог помочь мне и помочь мне выяснить, что я сделал неправильно, это было бы здорово.

Заранее спасибо.


Вот что я сделал:

Код события onClick кнопок ImageButtons:

public void onClick(View v) {
    if (v == btnExposure) {

        mFlipper.setDisplayedChild(0);

    } else if (v == btnProperties) {
        mFlipper.setDisplayedChild(1);
    } else if (v == btnSpecialEffects) {
        mFlipper.setDisplayedChild(2);
        String[] specialEffects = getResources().getStringArray(R.array.special_effects_array);
        lv.setAdapter(new ArrayAdapter < String > (this, R.layout.specialeffectsview, specialEffects));
        lv.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
    }

}

XML-код ViewFlipper в моем основном XML-файле:

<ViewFlipper
   android:layout_width="wrap_content" 
   android:layout_height="wrap_content"
   android:id="@+id/flipper"
   android:layout_toRightOf="@id/button_exposure">
   <include android:id="@+id/view_exposure" layout="@layout/exposureview" />
   <include android:id="@+id/view_properties" layout="@layout/propertiesview" />
   <include android:id="@+id/view_special_effects" layout="@layout/specialeffectsview"/>
  </ViewFlipper>

Массив строк в моем strings.xml:

<string-array name="special_effects_array">
        <item>None</item>
        <item>Greyscale</item>
        <item>Sepia</item>
        <item>Negative</item>
        <item>Solarize</item>
        <item>Polarize</item>
    </string-array>

И, наконец, specialeffectsview.xml (файл макета для ListView):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:id="@+id/view_special_effects_list"
 android:layout_width="fill_parent" 
 android:layout_height="fill_parent"
 xmlns:android="http://schemas.android.com/apk/res/android">
<ListView android:id="@+id/special_effects_list" 
 android:layout_height="wrap_content"
 android:layout_width="fill_parent"></ListView>
</LinearLayout>

1 Ответ

0 голосов
/ 03 августа 2010

Как уже обсуждалось в группах Google Android, когда вы запрашивали , ваш NullPointerException означает, что ваша переменная lv равна null. Вы должны сделать это не null, возможно, позвонив lv=(ListView)findViewById(R.id.special_effects_list) в какой-то момент после setContentView().

...