【发布时间】:2016-04-08 10:05:51
【问题描述】:
我根据许多教程和一些来自 SO 的错误问题制作了 ExpandableListView。 父列表由两个 TextView 和一个具有标准布局的 ImageButton 组成。子列表由单个 TextView 组成。 数据源来自SQLite数据库,从activity生成到ArrayList。
问题:
即使按钮正常工作,父组列表也能正常工作,但是当我尝试展开时,它不会展开。所以我尝试放一些 Toast 消息,但是在打开活动之后,它看起来像 getChildView() 方法根本没有触发,因为 Toast 消息根本没有显示。
ExpandableListAdapter 类是这样的
public class InventoryListExpandableListAdapter extends BaseExpandableListAdapter {
private Context context;
private ArrayList<Inventory> data;
private HashMap<String, ArrayList<String>> list_data;
public InventoryListExpandableListAdapter(Context context, ArrayList<Inventory> data, HashMap<String, ArrayList<String>> list_data) {
this.context = context;
this.data = data;
this.list_data = list_data;
}
@Override
public int getGroupCount() {return data.size();}
@Override
public int getChildrenCount(int groupPosition) {return list_data.get(data.get(groupPosition)).size();}
@Override
public Inventory getGroup(int groupPosition) {return data.get(groupPosition);}
@Override
public Object getChild(int groupPosition, int childPosition) {return list_data.get(data.get(groupPosition).getCode()).get(childPosition);}
@Override
public long getGroupId(int groupPosition) {return groupPosition;}
@Override
public long getChildId(int groupPosition, int childPosition) {return childPosition;}
@Override
public boolean hasStableIds() {return true;}
@Override
public View getGroupView(final int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
if (convertView == null) {
final Inventory inventory = getGroup(groupPosition);
convertView = View.inflate(context, R.layout.listview_layout_two_row_delete, null);
ImageButton btnDelete = (ImageButton)convertView.findViewById(R.id.btnDelete);
TextView text1 = (TextView)convertView.findViewById(R.id.text1);
TextView text2 = (TextView)convertView.findViewById(R.id.text2);
text1.setText(inventory.getCode());
text2.setText(inventory.getItem());
btnDelete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(context, "DELETED", Toast.LENGTH_SHORT).show();
}
});
}
return convertView;
}
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
final String childText = (String)getChild(groupPosition, childPosition);
LayoutInflater infalInflater = (LayoutInflater) this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = infalInflater.inflate(R.layout.listview_layout_single_text, null);
}
Toast.makeText(context, "Make Child number "+String.valueOf(childPosition), Toast.LENGTH_SHORT).show();
TextView text1 = (TextView)convertView.findViewById(R.id.text1);
text1.setText(childText);
return convertView;
}
@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
return true;
}
}
感谢您提供的任何帮助。谢谢。
【问题讨论】:
-
如果没有调用它可能是因为
getChildrenCount正在返回0 -
我查过了,size不是0
标签: java android expandablelistview