我调用的带9个参数的构造函数,
 为什么二级目录中ImageView出现了classcastexception异常?
 如果把暂时把上面相关代码注释掉再调试,
 为什么调试运行后二级子目录中的内容全部显示到了第一个一级子目录的下面去了?
 请求各路大神援助!!!源代码如下:
import java.util.ArrayList;
import java.util.HashMap;import android.app.Activity;
import android.os.Bundle;
import android.widget.ExpandableListView;
import android.widget.SimpleExpandableListAdapter;public class MainActivity extends Activity{
ExpandableListView explv;
ArrayList<HashMap<String,String>> group;
ArrayList<HashMap<String, Object>> server1,server2,server3;
ArrayList<ArrayList<HashMap<String,Object>>> servers;
   /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        explv=(ExpandableListView) findViewById(R.id.maindown_expandableListView);
        group=new ArrayList<HashMap<String,String>>();
        server1=new ArrayList<HashMap<String,Object>>();
        server2=new ArrayList<HashMap<String,Object>>();
        server3=new ArrayList<HashMap<String,Object>>();
        servers=new ArrayList<ArrayList<HashMap<String,Object>>>();
        explv.setAdapter(new SimpleExpandableListAdapter(
         this, getGroupList(), R.layout.group,
         new String[]{"groupname"}, 
         new int[]{R.id.groupname_textView}, 
         getServers(), R.layout.server2, 
         new String[]{"name","picture","sex","public"}, 
         new int[]{R.id.servername_textView,R.id.serverlog_imageView,R.id.serverprivate_textView,R.id.serverpublic_textView}));
    }
    ArrayList<HashMap<String,String>> getGroupList(){
     HashMap<String, String> map1,map2,map3;
     map1=new HashMap<String,String>();
     map1.put("groupname", "XX");
     map2=new HashMap<String,String>();
     map2.put("groupname", "XX");
     map3=new HashMap<String,String>();
     map3.put("groupname", "XX");
     group.add(map1);
     group.add(map2);
     group.add(map3);
return group;
    }
    ArrayList<HashMap<String,Object>> getServer1List(){
HashMap<String, Object> map1,map2,map3;
     map1=new HashMap<String,Object>();
     map1.put("name", "XXXX");
     map1.put("picture",R.drawable.icon );
     map1.put("sex", "XXXX");
     map1.put("public", "XXXX");
     map2=new HashMap<String,Object>();
     map2.put("name", "XXXX");
     map2.put("picture",R.drawable.icon );
     map2.put("sex", "XXXX");
     map2.put("public", "XXXX");
     map3=new HashMap<String,Object>();
     map3.put("name", "XXX");
     map3.put("picture",R.drawable.icon );
     map3.put("sex", "XXX");
     map3.put("public", "XXX");
     server1.add(map1);
     server1.add(map2);
     server1.add(map3);
return server1;
    }
    ArrayList<HashMap<String,Object>> getServer2List(){
     HashMap<String, Object> map1,map2;
     map1=new HashMap<String,Object>();
     map1.put("name", "XXX");
     map1.put("picture",R.drawable.icon);
     map1.put("sex", "XXX");
     map1.put("public", "XXX");
     map2=new HashMap<String,Object>();
     map2.put("name", "XXX");
     map2.put("picture",R.drawable.icon );
     map2.put("sex", "XXX);
     map2.put("public", "XXX");
     server1.add(map1);
     server1.add(map2);
return server2;
    }
    ArrayList<HashMap<String,Object>> getServer3List(){
     HashMap<String, Object> map1,map2,map3;
     map1=new HashMap<String,Object>();
     map1.put("name", "XXX");
     map1.put("picture",R.drawable.icon );
     map1.put("sex", "XXX");
     map1.put("public", "XXX");
     map2=new HashMap<String,Object>();
     map2.put("name", "XXX");
     map2.put("picture",R.drawable.icon );
     map2.put("sex", "XXX");
     map2.put("public", "XX");
     map3=new HashMap<String,Object>();
     map3.put("name", "XX");
     map3.put("picture",R.drawable.icon );
     map3.put("sex", "XX");
     map3.put("public", "XXX");
     server1.add(map1);
     server1.add(map2);
     server1.add(map3);;
return server3;
    }
    ArrayList<ArrayList<HashMap<String,Object>>> getServers(){
     servers.add(getServer1List());
        servers.add(getServer2List());
        servers.add(getServer3List());
return servers;
    }
}

解决方案 »

  1.   

    呵呵,Android高手,在本来就少的情况下,还有大部分,都是飘过。
    让我心碎。
      

  2.   

    SimpleExpandableAdapter只支持String类型数据,请继承SimpleExpandableAdapter自己实现带有其它数据类型(比如你的drawable类型)的adapter。
    看你的情况,只需要重写getView即可。
      

  3.   

    就是引起第一个错误的代码,就是把与添加drawable相关的内容的代码注释掉
      

  4.   

    我觉得,第二个问题并不是由于“暂时把上面相关代码注释掉再调试”而引起的,因为你的第一个问题直接是崩溃,你也不知道在表现第一个问题的时候,第二个问题有没有表现(因为崩溃了)。而你这描述让人迷惑,说不定,第一个和第二个问题一直都是同时存在的,如果从这个角度来看,可能你的layout定义有问题。
      

  5.   

    一级目录与二级目录都显示出来了,并且里面控件(指TextView)排列的方式也对,感觉不是Layout的问题,应该是其他地方的问题
      

  6.   

    getServer2List()
    里面应该是:
    server2.add(map1);
    server2.add(map2);getServer3List()
    里面应该是:
    server3.add(map1);
    server3.add(map2);
    server3.add(map3);尽量少复制代码,这是先辈给我们的教训,就算复制,也要仔细检查,调查表明,很多bug是复制出来的。