DialogPreference中的ExpandableListAdapter

时间:2013-03-25 12:28:05

标签: android android-layout expandablelistview expandablelistadapter

我试图将ExpandableListAdapter添加到DialogPrefence。

我的布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/channels_list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:clickable="true"
    android:orientation="horizontal" >
    <LinearLayout
        android:id="@+id/channelsProgress"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="center"
        android:orientation="vertical"
        android:visibility="gone" >

        <ProgressBar
            android:id="@+id/pbChannelsProgress"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:descendantFocusability="beforeDescendants" >
        </ProgressBar>
    </LinearLayout>
    <ExpandableListView
        android:id="@+id/list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
         >
    </ExpandableListView>

</LinearLayout>

这是我使用ListView

的方式
HiddenChannelsListAdapter adapter = new HiddenChannelsListAdapter(ctx, tree, subscribed_channelsList);
ListView lv = (ListView) vw.findViewById(R.id.list);
lv.setAdapter(adapter);

如何使用ExpandableListAdapter进行此操作?

ExampleReallySimpleExpandableListAdapter adapter = new ExampleReallySimpleExpandableListAdapter(ctx, groupData, childData);
AbsListView lv = (AbsListView) vw.findViewById(R.id.list);
lv.setAdapter(adapter);

这导致:

03-25 14:24:23.780: E/AndroidRuntime(22187): FATAL EXCEPTION: main
03-25 14:24:23.780: E/AndroidRuntime(22187): java.lang.ClassCastException: com.example.tvrplayer.ExampleReallySimpleExpandableListAdapter cannot be cast to android.widget.ListAdapter

1 个答案:

答案 0 :(得分:1)

setAdapter(ExpandableListAdapter)致电ExpandableListView,而不是setAdapter(ListAdapter)的通用AbsListView

即改变

AbsListView lv = (AbsListView) vw.findViewById(R.id.list);

ExpandableListView lv = (ExpandableListView) vw.findViewById(R.id.list);