Android layout 使用XML和代码处理ExpandableListView

Android layout 使用XML和代码处理ExpandableListView,android-layout,expandablelistview,expandablelistadapter,Android Layout,Expandablelistview,Expandablelistadapter,我只是想在一个活动中创建几个小组和相应的孩子。到目前为止没有成功。尝试了人们在不同问题上给出的各种建议,但他们没有让我的代码正常工作。也许,我不清楚这个概念,做了一些不能解决我问题的事情 我想通过XML指定expandablelistview、groupview和childview的布局。我想通过代码操作数据。目前,我正在使用BaseExpandableListaDapter,但将来我希望它也能与SimpleCorSortreeAdapter一起使用 以下是我编写的代码: 1) menuitem

我只是想在一个活动中创建几个小组和相应的孩子。到目前为止没有成功。尝试了人们在不同问题上给出的各种建议,但他们没有让我的代码正常工作。也许,我不清楚这个概念,做了一些不能解决我问题的事情

我想通过XML指定expandablelistview、groupview和childview的布局。我想通过代码操作数据。目前,我正在使用BaseExpandableListaDapter,但将来我希望它也能与SimpleCorSortreeAdapter一起使用

以下是我编写的代码:

1) menuitems.xml-实际的ExpandableListView

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <!-- Menu Title -->
    <!-- <TextView  android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:text="Menu Categories"
                android:textSize="20sp"/> -->

    <!-- Menu sorted according to the categories -->
    <ExpandableListView android:id="@android:id/list"
                        android:layout_height="fill_parent" 
                        android:layout_width="fill_parent"
                        >
    </ExpandableListView>

</LinearLayout>
当我运行此特定代码时,我得到一个
ClassCast
异常:

09-06 18:29:11.145: ERROR/AndroidRuntime(1031): FATAL EXCEPTION: main
09-06 18:29:11.145: ERROR/AndroidRuntime(1031): java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.widget.ListView.setupChild(ListView.java:1761)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.widget.ListView.makeAndAddView(ListView.java:1730)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.widget.ListView.fillDown(ListView.java:652)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.widget.ListView.fillFromTop(ListView.java:709)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.widget.ListView.layoutChildren(ListView.java:1580)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.widget.AbsListView.onLayout(AbsListView.java:1147)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.view.View.layout(View.java:7035)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1249)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1125)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.widget.LinearLayout.onLayout(LinearLayout.java:1042)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.view.View.layout(View.java:7035)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.view.View.layout(View.java:7035)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1249)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1125)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.widget.LinearLayout.onLayout(LinearLayout.java:1042)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.view.View.layout(View.java:7035)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.view.View.layout(View.java:7035)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.view.ViewRoot.performTraversals(ViewRoot.java:1045)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.os.Looper.loop(Looper.java:123)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.app.ActivityThread.main(ActivityThread.java:4627)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at java.lang.reflect.Method.invokeNative(Native Method)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at java.lang.reflect.Method.invoke(Method.java:521)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at dalvik.system.NativeStart.main(Native Method)
第二,, 我不清楚convertView和parent在方法中代表什么:

public View getGroupView(int groupPosition, boolean isExpanded,
                View convertView, ViewGroup parent)

有人能解释它们的意义吗

第三,, 我想从XML中检索expandableListView的Id,但没有创建Id,因为我们被迫将Id设置为
android:Id=“@android:Id/list”
。我的意思是在R.Id类中没有创建Id


-再会首先,下面的说法似乎是错误的

@Override
public View getChildView(int groupPosition, int childPosition,
        boolean isLastChild, View convertView, ViewGroup parent) 
{
    //TextView childView = null;

    convertView = ((LayoutInflater.from(FoodieActivity.this)).inflate(R.layout.child_list, null));
    **convertView = (TextView) convertView.findViewById(R.id.childListId);**

    ((TextView)convertView).setText(getChild(groupPosition, childPosition).toString());

    return convertView;
}

在这里,convertview很可能是一个布局。您不能将其转换为文本视图。

任何帮助都将不胜感激。
09-06 18:29:11.145: ERROR/AndroidRuntime(1031): FATAL EXCEPTION: main
09-06 18:29:11.145: ERROR/AndroidRuntime(1031): java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.widget.ListView.setupChild(ListView.java:1761)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.widget.ListView.makeAndAddView(ListView.java:1730)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.widget.ListView.fillDown(ListView.java:652)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.widget.ListView.fillFromTop(ListView.java:709)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.widget.ListView.layoutChildren(ListView.java:1580)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.widget.AbsListView.onLayout(AbsListView.java:1147)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.view.View.layout(View.java:7035)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1249)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1125)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.widget.LinearLayout.onLayout(LinearLayout.java:1042)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.view.View.layout(View.java:7035)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.view.View.layout(View.java:7035)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1249)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1125)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.widget.LinearLayout.onLayout(LinearLayout.java:1042)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.view.View.layout(View.java:7035)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.view.View.layout(View.java:7035)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.view.ViewRoot.performTraversals(ViewRoot.java:1045)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.os.Handler.dispatchMessage(Handler.java:99)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.os.Looper.loop(Looper.java:123)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at android.app.ActivityThread.main(ActivityThread.java:4627)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at java.lang.reflect.Method.invokeNative(Native Method)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at java.lang.reflect.Method.invoke(Method.java:521)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
09-06 18:29:11.145: ERROR/AndroidRuntime(1031):     at dalvik.system.NativeStart.main(Native Method)
public View getGroupView(int groupPosition, boolean isExpanded,
                View convertView, ViewGroup parent)
public View getChildView(int groupPosition, int childPosition,
                boolean isLastChild, View convertView, ViewGroup parent) 
@Override
public View getChildView(int groupPosition, int childPosition,
        boolean isLastChild, View convertView, ViewGroup parent) 
{
    //TextView childView = null;

    convertView = ((LayoutInflater.from(FoodieActivity.this)).inflate(R.layout.child_list, null));
    **convertView = (TextView) convertView.findViewById(R.id.childListId);**

    ((TextView)convertView).setText(getChild(groupPosition, childPosition).toString());

    return convertView;
}