logcat列出的错误如下:
03-28 05:22:46.422: E/AndroidRuntime(315): FATAL EXCEPTION: main
03-28 05:22:46.422: E/AndroidRuntime(315): java.lang.ClassCastException: android.widget.ImageView
03-28 05:22:46.422: E/AndroidRuntime(315):  at android.widget.SimpleExpandableListAdapter.bindView(SimpleExpandableListAdapter.java:247)
03-28 05:22:46.422: E/AndroidRuntime(315):  at android.widget.SimpleExpandableListAdapter.getChildView(SimpleExpandableListAdapter.java:229)
03-28 05:22:46.422: E/AndroidRuntime(315):  at android.widget.ExpandableListConnector.getView(ExpandableListConnector.java:450)
03-28 05:22:46.422: E/AndroidRuntime(315):  at android.widget.AbsListView.obtainView(AbsListView.java:1315)
03-28 05:22:46.422: E/AndroidRuntime(315):  at android.widget.ListView.makeAndAddView(ListView.java:1727)
03-28 05:22:46.422: E/AndroidRuntime(315):  at android.widget.ListView.fillDown(ListView.java:652)
03-28 05:22:46.422: E/AndroidRuntime(315):  at android.widget.ListView.fillSpecific(ListView.java:1284)
03-28 05:22:46.422: E/AndroidRuntime(315):  at android.widget.ListView.layoutChildren(ListView.java:1558)
03-28 05:22:46.422: E/AndroidRuntime(315):  at android.widget.AbsListView.onLayout(AbsListView.java:1147)
03-28 05:22:46.422: E/AndroidRuntime(315):  at android.view.View.layout(View.java:7035)
03-28 05:22:46.422: E/AndroidRuntime(315):  at android.widget.RelativeLayout.onLayout(RelativeLayout.java:909)
03-28 05:22:46.422: E/AndroidRuntime(315):  at android.view.View.layout(View.java:7035)
03-28 05:22:46.422: E/AndroidRuntime(315):  at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
03-28 05:22:46.422: E/AndroidRuntime(315):  at android.view.View.layout(View.java:7035)
03-28 05:22:46.422: E/AndroidRuntime(315):  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1249)
03-28 05:22:46.422: E/AndroidRuntime(315):  at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1125)
03-28 05:22:46.422: E/AndroidRuntime(315):  at android.widget.LinearLayout.onLayout(LinearLayout.java:1042)
03-28 05:22:46.422: E/AndroidRuntime(315):  at android.view.View.layout(View.java:7035)
03-28 05:22:46.422: E/AndroidRuntime(315):  at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
03-28 05:22:46.422: E/AndroidRuntime(315):  at android.view.View.layout(View.java:7035)
03-28 05:22:46.422: E/AndroidRuntime(315):  at android.view.ViewRoot.performTraversals(ViewRoot.java:1045)
03-28 05:22:46.422: E/AndroidRuntime(315):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
03-28 05:22:46.422: E/AndroidRuntime(315):  at android.os.Handler.dispatchMessage(Handler.java:99)
03-28 05:22:46.422: E/AndroidRuntime(315):  at android.os.Looper.loop(Looper.java:123)
03-28 05:22:46.422: E/AndroidRuntime(315):  at android.app.ActivityThread.main(ActivityThread.java:4627)
03-28 05:22:46.422: E/AndroidRuntime(315):  at java.lang.reflect.Method.invokeNative(Native Method)
03-28 05:22:46.422: E/AndroidRuntime(315):  at java.lang.reflect.Method.invoke(Method.java:521)
03-28 05:22:46.422: E/AndroidRuntime(315):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
03-28 05:22:46.422: E/AndroidRuntime(315):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
03-28 05:22:46.422: E/AndroidRuntime(315):  at dalvik.system.NativeStart.main(Native Method)
源程序:
package mars.ExpandableListViewDemo;
import java.util.*;
import android.app.ExpandableListActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.*;public class ExpandableListViewDemoActivity extends ExpandableListActivity {
    /** Called when the activity is first created. */
private int[] bookimgIds=
{
  R.drawable.pic1,R.drawable.pic2,
  R.drawable.pic3,R.drawable.pic4,
  R.drawable.pic5
};
private int[]bookmsgIds=
{
  R.string.title1,R.string.title2,
  R.string.title3,R.string.title4,
  R.string.title5
};
private int[]bookcontents=
{
R.string.content1,R.string.content2,
R.string.content3,R.string.content4,
R.string.content5
};

private static final int booknum = 5; //所显示书本内容的数量
private static final int productnum = 3;//所显示用具内容的数量
private Button backbutton = null;



    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        //创建一级目录,list<>内不是放二级目录的格式,而是放一级目录自身需显示的内容的格式       
        //往一级目录中添加内容
        Map<String,String> bookgroup = new HashMap<String,String>();
        bookgroup.put("group", "书籍");
        Map<String,String> productgroup = new HashMap<String,String>();
        productgroup.put("group", "用具");
        //将创建的一级目录放在一个集合中,供显示时使用
        List<Map<String,String>> groups = new ArrayList<Map<String,String>>();
        groups.add(bookgroup);
        groups.add(productgroup);
        
        //创建二级目录
        ArrayList<HashMap<String,Object>> bookchild = new ArrayList<HashMap<String,Object>>(); 
        ArrayList<HashMap<String,Object>> productchild = new ArrayList<HashMap<String,Object>>();
        //用函数往二级目录中添加内容
        bookchild = PutContentsIntoList(booknum,bookimgIds,bookmsgIds,bookcontents);
        productchild = PutContentsIntoList(productnum,bookimgIds,bookmsgIds,bookcontents);       
        // 将二级条目放在一个集合里,供显示时使用
        List<ArrayList<HashMap<String,Object>>> childs = new ArrayList<ArrayList<HashMap<String, Object>>>();
        childs.add(bookchild);
        childs.add(productchild);
       
        
        
        //用适配器将二级目录链接到相对应的一级目录上
       
        SimpleExpandableListAdapter adapter = new SimpleExpandableListAdapter(
                this, 
                groups, R.layout.group, new String[]{"group"},new int[]{R.id.group}, 
                childs, R.layout.user, new String[]{"imagelist","textview1","textview2"}, new int[]{R.id.imagelist,R.id.textview1,R.id.textview2});
        setListAdapter(adapter);
            
        backbutton = (Button)findViewById(R.id.button);
        backbutton.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
finish();
}
        
        });
        
    }//Override onCreate
    
   
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
// TODO Auto-generated method stub
Intent intent = new Intent();
intent.putExtra("positiongroup", groupPosition);
intent.putExtra("positionchild", childPosition);
//intent.setClass(ExpandableListViewDemoActivity.this, detail.class);
//this.startActivity(intent);
System.out.println("group-->"+groupPosition);
System.out.println("child-->"+childPosition);
return super.onChildClick(parent, v, groupPosition, childPosition, id);

}
//二级目录赋值图片和文字
 
private ArrayList<HashMap<String, Object>> PutContentsIntoList(int num,int[]imgIds,int[]msgIds,int[]contents) {
// TODO Auto-generated method stub
ArrayList<HashMap<String, Object>> templist = new ArrayList<HashMap<String, Object>>();
for (int i = 0;i<num;i++)
     {  HashMap<String,Object> map = new HashMap<String,Object>();
        
        map.put("imagelist",imgIds[i]);
      
        map.put("textview1", getResources().getString(msgIds[i]));
        map.put("textview2", getResources().getString(contents[i]));
        templist.add(map);
    
     }
     return templist;

}
    
因为我是从已成功的listview的基础上改进为expandablelistview的,程序有点混乱啊……内容赋值之类的还木有对应起来,所以先无视productchild里面是用book的内容这个神bug先吧……谢谢各位大神了!!!

解决方案 »

  1.   

    那个……每日一顶……>_<
      

  2.   

    你看一下Google SimpleDemo呀,那里面有详细的例子
      

  3.   

    我知道问题所在了~就是因为SimpleExpandableAdapter默认view都是textview,所以放图片就不行了,必须自己重写一个Adapter~TTATT
      

  4.   

    问题是有没有人知道BaseExpandableAdapter是怎么调用布局文件的?
    我重写之后能运行了,但是根目录完全看不到字啊~~那一行太小了遮住了文字,我明明设置了textview的setpadding还是没有用……救命啊……
      

  5.   

    上面的问题已经解决了~是因为要在getGroupView里面手动生成一个linearlayout,将textview放到里面去,setpadding之类的才可以有效