Android Expandale列表不在单击时展开
我试图在这里扩展列表点击可扩展的标题视图。但是我被卡住了为什么我不能显示子列表 这是我的活动课Android Expandale列表不在单击时展开,android,Android,我试图在这里扩展列表点击可扩展的标题视图。但是我被卡住了为什么我不能显示子列表 这是我的活动课 adapter = new MyExpandableAdapter(getActivity(),parentHashMap,parentObjectCollection); expandableListView.setAdapter(adapter) // Listview Group expanded listener expandableLis
adapter = new MyExpandableAdapter(getActivity(),parentHashMap,parentObjectCollection);
expandableListView.setAdapter(adapter)
// Listview Group expanded listener
expandableListView.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() {
@Override
public void onGroupExpand(int groupPosition) {
Toast.makeText(getActivity(), parentObjectCollection.get(groupPosition) + " Expanded", Toast.LENGTH_SHORT).show();
}
});
适配器类是:
public class MyExpandableAdapter extends BaseExpandableListAdapter {
private Context context;
private List<String> parentObjectsCollection;
private HashMap<String, List<MarkerInfoData>> parentHashMap;
/* ArrayList<MarkerInfoData> child_list;
LayoutInflater inflater;*/
public MyExpandableAdapter(Context context, HashMap<String, List<MarkerInfoData>> hashmap, List<String> list) {
parentHashMap = hashmap;
this.context = context;
this.parentHashMap = hashmap;
this.parentObjectsCollection = list;
}
@Override
public View getChildView(int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
//String childTitle = (String) getChild(groupPosition, childPosition);
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.child_row, parent, false);
}
TextView cityName = (TextView) convertView.findViewById(R.id.txtLocationcityName);
TextView cityAddress = (TextView) convertView.findViewById(R.id.txtLocationcityAddress);
TextView cityDistance = (TextView) convertView.findViewById(R.id.txtcityLocationDistanceFromCurrentLocation);
cityName.setText(parentHashMap.get(parentObjectsCollection.get(groupPosition)).get(childPosition).markerName);
cityAddress.setText(parentHashMap.get(parentObjectsCollection.get(groupPosition)).get(childPosition).markerAddress);
String distanceInMiles = parentHashMap.get(parentObjectsCollection.get(groupPosition)).get(childPosition).distance;
if (distanceInMiles != null && distanceInMiles.length() > 0) {
cityDistance.setText(distanceInMiles + "\nMiles");
} else {
cityDistance.setText("");
}
//childtextview.setText(childTitle);
return convertView;
}
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
String GroupTitle = (String) getGroup(groupPosition);
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.parent_row, parent, false);
}
TextView parenttextview = (TextView) convertView.findViewById(R.id.textviewparent);
parenttextview.setText(GroupTitle);
return convertView;
}
@Override
public Object getChild(int groupPosition, int childPosition) {
return this.parentHashMap.get(this.parentObjectsCollection.get(groupPosition)).get(childPosition);
}
@Override
public long getChildId(int groupPosition, int childPosition) {
return childPosition;
}
@Override
public int getChildrenCount(int groupPosition) {
return this.parentHashMap.get(this.parentObjectsCollection.get(groupPosition)).size();
}
@Override
public Object getGroup(int groupPosition) {
return this.parentObjectsCollection.get(groupPosition);
}
@Override
public int getGroupCount() {
return parentObjectsCollection.size();
}
@Override
public long getGroupId(int groupPosition) {
return groupPosition;
}
@Override
public boolean hasStableIds() {
return true;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
}
公共类MyExpandableAdapter扩展了BaseExpandableListAdapter{
私人语境;
私有列表parentObjectsCollection;
私有HashMap parentHashMap;
/*ArrayList子列表;
充气机*/
公共MyExpandableAdapter(上下文上下文、哈希映射、哈希映射、列表){
parentHashMap=hashmap;
this.context=上下文;
this.parentHashMap=hashmap;
this.parentObjectsCollection=列表;
}
@凌驾
公共视图getChildView(int-groupPosition,final int-childPosition,boolean isLastChild,View-convertView,ViewGroup-parent){
//String childTitle=(String)getChild(groupPosition,childPosition);
if(convertView==null){
LayoutFlater充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
convertView=充气机。充气(R.layout.child_行,父,false);
}
TextView cityName=(TextView)convertView.findViewById(R.id.txtLocationcityName);
TextView cityAddress=(TextView)convertView.findViewById(R.id.txtLocationcityAddress);
TextView cityDistance=(TextView)convertView.findViewById(R.id.txtcityLocationDistanceFromCurrentLocation);
cityName.setText(parentHashMap.get(parentObjectsCollection.get(groupPosition)).get(childPosition.markerName);
cityAddress.setText(parentHashMap.get(parentObjectsCollection.get(groupPosition)).get(childPosition.markerAddress);
String distanceInMiles=parentHashMap.get(parentObjectsCollection.get(groupPosition)).get(childPosition).distance;
if(distanceInMiles!=null&&distanceInMiles.length()>0){
cityDistance.setText(distanceInMiles+“\n英里”);
}否则{
cityDistance.setText(“”);
}
//childtextview.setText(childTitle);
返回视图;
}
@凌驾
公共视图getGroupView(int groupPosition、布尔isExpanded、视图convertView、视图组父级){
字符串GroupTitle=(字符串)getGroup(groupPosition);
if(convertView==null){
LayoutFlater充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
convertView=充气机。充气(R.layout.parent\u行,parent,false);
}
TextView parenttextview=(TextView)convertView.findViewById(R.id.textviewparent);
parenttextview.setText(GroupTitle);
返回视图;
}
@凌驾
公共对象getChild(int-groupPosition,int-childPosition){
返回this.parentHashMap.get(this.parentObjectsCollection.get(groupPosition)).get(childPosition);
}
@凌驾
公共长getChildId(int-groupPosition,int-childPosition){
返回子位置;
}
@凌驾
公共整数getChildrenCount(整数组位置){
返回此.parentHashMap.get(this.parentObjectsCollection.get(groupPosition)).size();
}
@凌驾
公共对象getGroup(int-groupPosition){
返回此.parentObjectsCollection.get(groupPosition);
}
@凌驾
public int getGroupCount(){
返回parentObjectsCollection.size();
}
@凌驾
公共长getGroupId(int-groupPosition){
返回组位置;
}
@凌驾
公共布尔表ID(){
返回true;
}
@凌驾
公共布尔值isChildSelectable(int-groupPosition,int-childPosition){
返回true;
}
}
我认为您的代码中缺少onGroupClick方法,如果处理了click,该方法将返回true。试试这个
expandableListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
Toast.makeText(MainActivity.this,headers.get(groupPosition)+"--"+headeritems.get(headers.get(groupPosition)).get(childPosition),Toast.LENGTH_SHORT).show();
return false;
}
});
请参阅此处:-post XML of
R.layout.parent_row
file.parentrow正在膨胀问题在子行中返回此.parentHashMap.get(this.parentObjectsCollection.get(groupPosition)).size();返回null。我在代码中添加了这个。expandableListView.setOnGroupExpandListener(新的expandableListView.OnGroupExpandListener(){@Override public void onGroupExpand(int groupPosition){Toast.makeText(getActivity(),parentObjectCollection.get(groupPosition)+“Expanded”,Toast.LENGTH_SHORT.show();});