Android 如何突出显示ExpandableListView选择?

Android 如何突出显示ExpandableListView选择?,android,android-listview,expandablelistview,onclicklistener,Android,Android Listview,Expandablelistview,Onclicklistener,当我选择childPosition时,它会高亮显示并持久化。但是,当我单击其组以再次折叠和展开时,高光消失 代码: MyListAdapter.java: public class MyListAdapter extends BaseExpandableListAdapter { private Context context; private ArrayList<HeaderInfo> deptList; public MyListAdapter(Context cont

当我选择childPosition时,它会高亮显示并持久化。但是,当我单击其组以再次折叠和展开时,高光消失

代码:

MyListAdapter.java:

public class MyListAdapter extends BaseExpandableListAdapter {

 private Context context;
 private ArrayList<HeaderInfo> deptList;

 public MyListAdapter(Context context, ArrayList<HeaderInfo> deptList) {
  this.context = context;
  this.deptList = deptList;
 }

 @Override
 public Object getChild(int groupPosition, int childPosition) {
  ArrayList<DetailInfo> productList = deptList.get(groupPosition).getProductList();
  return productList.get(childPosition);
 }

 @Override
 public long getChildId(int groupPosition, int childPosition) {
  return childPosition;
 }

 @Override
 public View getChildView(int groupPosition, int childPosition, boolean isLastChild,
   View view, ViewGroup parent) {
  DetailInfo detailInfo = (DetailInfo) getChild(groupPosition, childPosition);
  if (view == null) {
   LayoutInflater infalInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
   view = infalInflater.inflate(R.layout.child_row, null);
  }

  TextView sequence = (TextView) view.findViewById(R.id.sequence);
  sequence.setText(detailInfo.getSequence().trim() + ") ");
  TextView childItem = (TextView) view.findViewById(R.id.childItem);
  childItem.setText(detailInfo.getName().trim());

  return view;
 }

 @Override
 public int getChildrenCount(int groupPosition) {
  ArrayList<DetailInfo> productList = deptList.get(groupPosition).getProductList();
  return productList.size();
 }

 @Override
 public Object getGroup(int groupPosition) {
  return deptList.get(groupPosition);
 }

 @Override
 public int getGroupCount() {
  return deptList.size();
 }

 @Override
 public long getGroupId(int groupPosition) {
  return groupPosition;
 }

 @Override
 public View getGroupView(int groupPosition, boolean isLastChild, View view,
   ViewGroup parent) {

  HeaderInfo headerInfo = (HeaderInfo) getGroup(groupPosition);
  if (view == null) {
   LayoutInflater inf = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
   view = inf.inflate(R.layout.group_heading, null);
  }

  TextView heading = (TextView) view.findViewById(R.id.heading);
  heading.setText(headerInfo.getName().trim());

  return view;
 }

 @Override
 public boolean hasStableIds() {
  return true;
 }

 @Override
 public boolean isChildSelectable(int groupPosition, int childPosition) {
  return true;
 }  
}
公共类MyListAdapter扩展了BaseExpandableListAdapter{
私人语境;
私人ArrayList部门列表;
公共MyListAdapter(上下文,ArrayList deptList){
this.context=上下文;
this.deptList=deptList;
}
@凌驾
公共对象getChild(int-groupPosition,int-childPosition){
ArrayList productList=deptList.get(groupPosition.getProductList();
返回productList.get(childPosition);
}
@凌驾
公共长getChildId(int-groupPosition,int-childPosition){
返回子位置;
}
@凌驾
公共视图getChildView(int-groupPosition、int-childPosition、boolean-isLastChild、,
视图、视图组(父视图){
DetailInfo DetailInfo=(DetailInfo)getChild(groupPosition,childPosition);
如果(视图==null){
LayoutInflater infalInflater=(LayoutInflater)context.getSystemService(context.LAYOUT\u INFLATER\u SERVICE);
视图=充气器充气(R.layout.child_行,空);
}
TextView序列=(TextView)view.findViewById(R.id.sequence);
sequence.setText(detailInfo.getSequence().trim()+”);
TextView childItem=(TextView)view.findViewById(R.id.childItem);
setText(detailInfo.getName().trim());
返回视图;
}
@凌驾
公共整数getChildrenCount(整数组位置){
ArrayList productList=deptList.get(groupPosition.getProductList();
返回productList.size();
}
@凌驾
公共对象getGroup(int-groupPosition){
返回deptList.get(groupPosition);
}
@凌驾
public int getGroupCount(){
返回deptList.size();
}
@凌驾
公共长getGroupId(int-groupPosition){
返回组位置;
}
@凌驾
public View getGroupView(int-groupPosition、boolean-isLastChild、View-View、,
视图组(父级){
HeaderInfo HeaderInfo=(HeaderInfo)getGroup(groupPosition);
如果(视图==null){
LayoutInflater inf=(LayoutInflater)context.getSystemService(context.LAYOUT\u INFLATER\u SERVICE);
视图=inf.inf充气(R.layout.group\U标题,空);
}
TextView标题=(TextView)view.findViewById(R.id.heading);
heading.setText(headerInfo.getName().trim());
返回视图;
}
@凌驾
公共布尔表ID(){
返回true;
}
@凌驾
公共布尔值isChildSelectable(int-groupPosition,int-childPosition){
返回true;
}  
}
行\u highlighter\u child.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@android:color/holo_blue_light" android:state_activated="true"/>
    <item android:drawable="@android:color/holo_green_light" android:state_pressed="true"/>
    <item android:drawable="@android:color/holo_orange_light"/>
</selector>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/row_highlighter_child"    
    android:orientation="vertical" >

    <TextView
        android:id="@+id/sequence"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:paddingLeft="35sp"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/childItem"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@id/sequence"
        android:textAppearance="?android:attr/textAppearanceMedium" />

</RelativeLayout>

child.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@android:color/holo_blue_light" android:state_activated="true"/>
    <item android:drawable="@android:color/holo_green_light" android:state_pressed="true"/>
    <item android:drawable="@android:color/holo_orange_light"/>
</selector>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/row_highlighter_child"    
    android:orientation="vertical" >

    <TextView
        android:id="@+id/sequence"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:paddingLeft="35sp"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/childItem"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@id/sequence"
        android:textAppearance="?android:attr/textAppearanceMedium" />

</RelativeLayout>