android中expandablelistview点击哪一条那一条显示,而其他条隐藏的实现办法

2025-05-17 21:42:45
推荐回答(1个)
回答(1):

转载!!!
  1 直接上代码
  2  
  3 [java]  
  4 public class MyActivity extends Activity implements HandleClick{  
  5      
  6   
  7     private ExpandableListView listView;  
  8       
  9     private int lastClick = -1;//上一次点击的group的position  
 10       
 11     public void onCreate(Bundle savedInstanceState) {  
 12         super.onCreate(savedInstanceState);  
 13         setContentView(R.layout.main);  
 14           
 15         listView = (ExpandableListView)findViewById(R.id.listView);  
 16         //去掉前面的箭头图标  
 17         listView.setGroupIndicator(null);  
 18           
 19         MyExpandAdapter adapter = new MyExpandAdapter(this);  
 20         adapter.setHnadleClick(this);  
 21        listView.setAdapter(adapter);  
 22           
 23          
 24         listView.setOnGroupClickListener(new OnGroupClickListener() {  
 25             public boolean onGroupClick(ExpandableListView parent, View v,  
 26                     int groupPosition, long id) {  
 27                   
 28                 if(lastClick == -1)  
 29                 {  
 30                     listView.expandGroup(groupPosition);  
 31                 }  
 32                   
 33                 if(lastClick != -1 && lastClick != groupPosition)  
 34                 {  
 35                     listView.collapseGroup(lastClick);  
 36                     listView.expandGroup(groupPosition);  
 37                 }  
 38                 else if(lastClick == groupPosition)   
 39                 {  
 40                     if(listView.isGroupExpanded(groupPosition))  
 41                         listView.collapseGroup(groupPosition);  
 42                     else if(!listView.isGroupExpanded(groupPosition))  
 43                         listView.expandGroup(groupPosition);  
 44                 }  
 45                   
 46                 lastClick = groupPosition;  
 47                 return true;  
 48             }  
 49         });  
 50     }  
 51   
 52       
 53     public void handleClick(int type) {  
 54           
 55         Toast.makeText(MyActivity.this, "...点了一下...", Toast.LENGTH_SHORT).show();  
 56     }  
 57 }  
 58  
 59 适配器:
 60 [java]  
 61 public class MyExpandAdapter extends BaseExpandableListAdapter{  
 62   
 63     private Context context;  
 64     private String[] roomName  = new String[]{"房间1","房间2","房间3","房间4","房间5"};  
 65     private String[] peoNum = new String[]{"1323人","6654人","86554人","6565人","7967人"};  
 66     private String[] startTime = new String[]{"马上开始","1分钟","2分钟","3分钟","4分钟"};  
 67       
 68     private HandleClick handleClick;  
 69       
 70     public interface HandleClick  
 71     {  
 72         public void handleClick(int type);  
 73     }  
 74       
 75     public void setHnadleClick(HandleClick hc)  
 76     {  
 77         this.handleClick = hc;  
 78     }  
 79       
 80     public MyExpandAdapter(Context context)  
 81     {  
 82         this.context = context;  
 83     }  
 84       
 85     public boolean isChildSelectable(int groupPosition, int childPosition) {  
 86         // TODO Auto-generated method stub  
 87         return false;  
 88     }  
 89       
 90     @Override  
 91     public boolean hasStableIds() {  
 92         // TODO Auto-generated method stub  
 93         return false;  
 94     }  
 95       
 96     @Override  
 97     public View getGroupView(int groupPosition, boolean isExpanded,  
 98             View convertView, ViewGroup parent) {  
 99           
100         convertView = (RelativeLayout)RelativeLayout.inflate(context, R.layout.group, null);  
101         TextView tv_roomName = (TextView)convertView.findViewById(R.id.tv_roomName);  
102         TextView tv_time = (TextView)convertView.findViewById(R.id.tv_time);  
103         TextView tv_peoNum = (TextView)convertView.findViewById(R.id.tv_peoNum);  
104           
105         tv_roomName.setText(roomName[groupPosition]);  
106         tv_time.setText(peoNum[groupPosition]);  
107         tv_peoNum.setText(startTime[groupPosition]);  
108           
109         return convertView;  
110     }  
111       
112     @Override  
113     public long getGroupId(int groupPosition) {  
114         // TODO Auto-generated method stub  
115         return 0;  
116     }  
117       
118     @Override  
119     public int getGroupCount() {  
120         // TODO Auto-generated method stub  
121         return roomName.length;  
122     }  
123       
124     @Override  
125     public Object getGroup(int groupPosition) {  
126         // TODO Auto-generated method stub  
127         return null;  
128     }  
129       
130     @Override  
131     public int getChildrenCount(int groupPosition) {  
132         // TODO Auto-generated method stub  
133         return 1;  
134     }  
135       
136     @Override  
137     public View getChildView(int groupPosition, int childPosition,  
138             boolean isLastChild, View convertView, ViewGroup parent) {  
139           
140         convertView = (LinearLayout)LinearLayout.inflate(context, R.layout.child, null);  
141           
142         TextView child_startTime = (TextView)convertView.findViewById(R.id.child_startTime);  
143         TextView child_peoNum = (TextView)convertView.findViewById(R.id.child_peoNum);  
144         Button child_button = (Button)convertView.findViewById(R.id.child_button);  
145           
146         child_startTime.setText(startTime[groupPosition]);  
147         child_peoNum.setText(peoNum[groupPosition]);  
148         child_button.setOnClickListener(new OnClickListener() {  
149             public void onClick(View v) {  
150                   
151                 handleClick.handleClick(1);  
152             }  
153         });  
154           
155         return convertView;  
156     }  
157       
158     public long getChildId(int groupPosition, int childPosition) {  
159         // TODO Auto-generated method stub  
160         return 0;  
161     }  
162       
163     @Override  
164     public Object getChild(int groupPosition, int childPosition) {  
165         // TODO Auto-generated method stub  
166         return null;  
167     }  
168   
169 }