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