自定义xml为每个项view
public class TreeViewAdapter extends BaseExpandableListAdapter{ 
private LayoutInflater inflater;
public TreeViewAdapter  (Context c) {
this.inflater = LayoutInflater.from(c);
}
 public View getChildView(int groupPosition, int childPosition,  
            boolean isLastChild, View convertView, ViewGroup parent) { 
            View myView = inflater.inflate(R.layout.xxx, null);
if(childPosition==XX){
  myView.setBackgroundDrawable(XXX图片)
}
}
 public View getGroupView(int groupPosition, boolean isExpanded,  
            View convertView, ViewGroup parent) {  
//跟上面一样判断groupPosition
}
}
高亮的话设置选中的监听就可以了

解决方案 »

  1.   

    高亮通过设置selector来解决就行了
    http://hi.baidu.com/linrw/blog/item/69e1eb89b516aabe0f2444e5.html/cmtid/81d88bd5be5973ca51da4b16
      

  2.   

    dinjay兄,selecter只能修改背景图片; 我想要的是字体高亮,(修改字体颜色)。不一样的吧?
      

  3.   

    那就自己处理onitemclick了,点击的时候修改child的字体颜色
      

  4.   

    peijiangping1989兄,你好! 我试了你的代码,但是我的ExpandableListview是没有xml的,所以不知道怎么执行 View myView = inflater.inflate(R.layout.xxx, null);
      这一句。那ConvertView来当作myView,程序崩溃。我的代码如下:        public View getGroupView(int groupPosition, boolean isExpanded, View convertView,
                    ViewGroup parent) {
                TextView textView = getGenericView();
                textView.setText(getGroup(groupPosition).toString());
          ///////////////////////////////////////      
    if(groupPosition==1){
    convertView.setBackgroundResource(R.drawable.bg);
    }
    if(groupPosition==2){
    convertView.setBackgroundResource(R.drawable.bg2);
    }
          ///////////////////////////////////////      


                return textView;
            }
      

  5.   

    package com.pei;import android.app.Activity;
    import android.content.Context;
    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.TextView;public class TestExpandableList extends Activity {
    /** Called when the activity is first created. */
    ExpandableListView expandableList;
    public String[] groups = { "xxxx好友", "xxxx同学", "xxxxx女人" };
    public String[] parent = { "xxxx好友", "xxxx同学" }; @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    expandableList = (ExpandableListView) TestExpandableList.this
    .findViewById(R.id.ExpandableListView01);
    expandableList.setAdapter(new TreeViewAdapter(this));
    }
    public class TreeViewAdapter extends BaseExpandableListAdapter{
    private LayoutInflater inflater;
    public TreeViewAdapter (Context c) {
    this.inflater = LayoutInflater.from(c);
    }
    @Override
    public Object getChild(int groupPosition, int childPosition) {
    View myView = inflater.inflate(R.layout.cc, null);
    if(groupPosition==1){
    myView.setBackgroundColor(R.drawable.XX);
    }

    TextView textview=(TextView)myView.findViewById(R.id.TextView001);
    textview.setText(parent[groupPosition]);
    return myView;
    } @Override
    public long getChildId(int groupPosition, int childPosition) {
    // TODO Auto-generated method stub
    return 0;
    } @Override
    public View getChildView(int groupPosition, int childPosition,
    boolean isLastChild, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    return null;
    } @Override
    public int getChildrenCount(int groupPosition) {
    // TODO Auto-generated method stub
    return 2;
    } @Override
    public Object getGroup(int groupPosition) {
    // TODO Auto-generated method stub
    return null;
    } @Override
    public int getGroupCount() {
    // TODO Auto-generated method stub
    return 3;
    } @Override
    public long getGroupId(int groupPosition) {
    // TODO Auto-generated method stub
    return 0;
    } @Override
    public View getGroupView(int groupPosition, boolean isExpanded,
    View convertView, ViewGroup parent) {
    View myView = inflater.inflate(R.layout.dd, null);
    if(groupPosition==1){
    myView.setBackgroundColor(R.drawable.XX);
    }
    if(groupPosition==3){
    myView.setBackgroundColor(R.drawable.XX);
    }
    TextView textview=(TextView)myView.findViewById(R.id.TextView01);
    textview.setText(groups[groupPosition]);
    return myView;
    } @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;
    }

    }
    }这样我帮你测试了没问题,只限于界面。逻辑代码没写。
      

  6.   

    R.layout.dd

    R.layout.cc是2个xml。你可以在里面自己定义你需要的控件
      

  7.   

    我给你个链接,你下这个源码看看,能学习很多
    myView.setBackgroundColor(R.color.heihui);
      

  8.   

    peijiangping兄,链接点击进去显示“404,你懂得”
    哈哈,能不能重发一遍。。
      

  9.   

    package com.pei;import android.app.Activity;
    import android.content.Context;
    import android.graphics.Bitmap;
    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.TextView;public class TestExpandableList extends Activity { ExpandableListView expandableList;
    public String[] str1 = { "xxxx好友", "xxxx同学", "xxxxx女人" };
    public String[] str2 = { "xxxx好友", "xxxx同学" }; @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    expandableList = (ExpandableListView) TestExpandableList.this
    .findViewById(R.id.ExpandableListView01);
    expandableList.setAdapter(new TreeViewAdapter(this));
    } public class TreeViewAdapter extends BaseExpandableListAdapter {
    private LayoutInflater inflater;
    private LayoutInflater inflater1; public TreeViewAdapter(Context c) {
    this.inflater = LayoutInflater.from(c);
    this.inflater1 = LayoutInflater.from(c);
    } @Override
    public Object getChild(int groupPosition, int childPosition) { return childPosition; } @Override
    public long getChildId(int groupPosition, int childPosition) {
    // TODO Auto-generated method stub
    return 0;
    } @Override
    public View getChildView(int groupPosition, int childPosition,
    boolean isLastChild, View convertView, ViewGroup parent) {
    View myView = inflater1.inflate(R.layout.cc, null);
    if (childPosition == 0) {
    myView.setBackgroundResource(R.drawable.water);
    }
    if (childPosition == 1) {
    myView.setBackgroundResource(R.drawable.water);
    }
    TextView textview = (TextView) myView
    .findViewById(R.id.TextView001);
    textview.setText(str2[childPosition]);
    return myView;
    } @Override
    public int getChildrenCount(int groupPosition) {
    // TODO Auto-generated method stub
    return 2;
    } @Override
    public Object getGroup(int groupPosition) {
    // TODO Auto-generated method stub
    return "dd"; } @Override
    public int getGroupCount() {
    // TODO Auto-generated method stub
    return 3;
    } @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) {
    View myView = inflater.inflate(R.layout.dd, null);
    if (groupPosition == 0) {
    myView.setBackgroundResource(R.drawable.icon);
    }
    if (groupPosition == 1) {
    myView.setBackgroundResource(R.drawable.waterfour);
    }
    if (groupPosition == 2) {
    myView.setBackgroundResource(R.drawable.icon);
    }
    TextView textview = (TextView) myView.findViewById(R.id.TextView01);
    textview.setText(str1[groupPosition]);
    return myView;
    } private Object getResources() {
    // TODO Auto-generated method stub
    return null;
    } @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;
    } }
    }
    对不起,这次没问题。你要xml代码我也可以给你发,这次绝对的可以哦
      

  10.   

    main.xml<?xml version="1.0" encoding="utf-8"?>  
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
        android:orientation="vertical" android:layout_width="fill_parent"  
        android:layout_height="fill_parent">  
          
        <ExpandableListView android:id="@+id/ExpandableListView01"  
            android:layout_width="fill_parent" android:layout_height="fill_parent"></ExpandableListView>  
    </LinearLayout>  dd.xml<LinearLayout android:id="@+id/LinearLayout01" android:layout_width="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="50px"><TextView android:id="@+id/TextView01" android:layout_width="fill_parent" android:layout_height="50px" android:textSize="30px" android:gravity="center"></TextView>
    </LinearLayout>
    cc.xml<LinearLayout android:id="@+id/LinearLayout01" android:layout_width="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="50px" android:orientation="horizontal"><ImageView android:id="@+id/ImageView01" android:layout_height="fill_parent" android:layout_width="100px" android:background="@drawable/icon"></ImageView>
    <TextView android:id="@+id/TextView001" android:layout_height="fill_parent" android:layout_width="fill_parent"></TextView>
    </LinearLayout>
      

  11.   

    谢了老兄,试了一下的确是可以的。不过,Group那行的最左侧都是带 “展开”小图标的。那个小图标能不能去掉啊?另外,你上面放的那个链接能不能再放一次?我感觉我做出来的效果比较差,想看看别人怎么做的。。多谢多谢!
      

  12.   

    老兄,左侧的那个小图标可以去掉了。通过修改该listview的属性 android:groupIndicator="@null" 即可。那就请老兄把上面的链接再发一次,让我学习学习!谢了
      

  13.   

    http://v8.freep.cn/3tb_1103012045426ky6435341.jpg哈哈,恩,加油学习啊 
      

  14.   

    悲剧怎么又发错了
    是这个http://www.eoeandroid.com/forum-viewthread-tid-42715-highlight-ui.html