关于ExpandableListView,请教各路大神!!!
写了一段关于ExpandableListView的代码,但是调试时出了空指针异常(代码中已经把出现异常的地方标记出来了),但是就是没找出来为什么,请大神们帮忙,大神们顺便帮忙看看这个控件的使用是否还有其他问题,代码如下:
package duan.textfour;
import java.util.ArrayList;
import java.util.HashMap;
import android.app.Activity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.ExpandableListView;
import android.widget.ImageView;
import android.widget.TextView;
public class Four extends Activity {
private ArrayList<String> group=new ArrayList<String>();
private ArrayList<ArrayList<HashMap<String,Object>>> childs=new ArrayList<ArrayList<HashMap<String,Object>>>();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
setGroup("论坛");
setChilds("论坛", "天涯论坛", R.drawable.icon);
setChilds("论坛", "猫扑论坛", R.drawable.icon);
ExpandableListView exlv= (ExpandableListView) findViewById(R.id.expandableListView1);
exlv.setAdapter(new MyAdapter());
}
public void setGroup(String grpStr){
group.add(grpStr);
}
public void setChilds(String grpStr,String name,Object log){
ArrayList<HashMap<String,Object>> child=new ArrayList<HashMap<String,Object>>();
HashMap<String,Object> map1=new HashMap<String,Object>();
HashMap<String,Object> map2=new HashMap<String,Object>();
HashMap<String,Object> map3=new HashMap<String,Object>();
map1.put("grpStr", grpStr);
map2.put("name", name);
map3.put("log", log);
child.add(map1);
child.add(map2);
child.add(map3);
childs.add(child);
}
class MyAdapter extends BaseExpandableListAdapter{
class ViewHolder {
TextView tv;
ImageView iv;
}
class ViewHolder2{
TextView tv;
}
LayoutInflater chInflater=(LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
LayoutInflater grpInflater=(LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
@Override
public Object getChild(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return childs.get(groupPosition).get(childPosition);
}
@Override
public long getChildId(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return childPosition;
}
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder vh=new ViewHolder();
if(convertView==null){
convertView=chInflater.inflate(R.layout.child,null);
vh.iv=(ImageView) findViewById(R.id.childlog_imageView);
vh.tv=(TextView) findViewById(R.id.child_textView);
convertView.setTag(vh);
}
else{
vh=(ViewHolder) convertView.getTag();
}
vh.tv.setText((String)childs.get(groupPosition).get(childPosition).get("name"));
vh.iv.setBackgroundResource((Integer)childs.get(groupPosition).get(childPosition).get("log"));
return convertView;
}
@Override
public int getChildrenCount(int groupPosition) {
// TODO Auto-generated method stub
return childs.get(groupPosition).size();
}
@Override
public Object getGroup(int groupPosition) {
// TODO Auto-generated method stub
return group.get(groupPosition);
}
@Override
public int getGroupCount() {
// TODO Auto-generated method stub
return group.size();
}
@Override
public long getGroupId(int groupPosition) {
// TODO Auto-generated method stub
return groupPosition;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder2 vh=new ViewHolder2();
if(convertView==null){
convertView=grpInflater.inflate(R.layout.group, null);
vh.tv=(TextView) findViewById(R.id.group_textview);
convertView.setTag(vh);
}
else{
vh=(ViewHolder2) convertView.getTag();
}
//在下面这段代码中出现空指针异常
vh.tv.setText(group.get(groupPosition));
return convertView;
}
@Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return false;
}
}
}