在使用exadablelistview中主要的事对于adapter中几个方法的认识
- private class MyExpandableListViewAdapter extends BaseExpandableListAdapter {
- // 获得某个父项的某个子项
- @Override
- public Object getChild(int parentPos, int childPos) {
- return dataset.get(parentList[parentPos]).get(childPos);
- }
- // 获得父项的数量
- @Override
- public int getGroupCount() {
- return dataset.size();
- }
- // 获得某个父项的子项数目
- @Override
- public int getChildrenCount(int parentPos) {
- return dataset.get(parentList[parentPos]).size();
- }
- // 获得某个父项
- @Override
- public Object getGroup(int parentPos) {
- return dataset.get(parentList[parentPos]);
- }
- // 获得某个父项的id
- @Override
- public long getGroupId(int parentPos) {
- return parentPos;
- }
- // 获得某个父项的某个子项的id
- @Override
- public long getChildId(int parentPos, int childPos) {
- return childPos;
- }
- // 按函数的名字来理解应该是是否具有稳定的id,这个方法目前一直都是返回false,没有去改动过
- @Override
- public boolean hasStableIds() {
- return false;
- }
- // 获得父项显示的view
- @Override
- public View getGroupView(int parentPos, boolean b, View view, ViewGroup viewGroup) {
- return view;
- }
- // 获得子项显示的view
- @Override
- public View getChildView(int parentPos, int childPos, boolean b, View view, ViewGroup viewGroup) {
- return view;
- }
- // 子项是否可选中,如果需要设置子项的点击事件,需要返回true
- @Override
- public boolean isChildSelectable(int i, int i1) {
- return false;
- }
- }
@Override public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { if(convertView==null){ //创建layoutinflaterserver LayoutInflater layoutInflater= (LayoutInflater) MainActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView=layoutInflater.inflate(R.layout.parent_item,null); } convertView.setTag(R.layout.parent_item, groupPosition); convertView.setTag(R.layout.child_item, -1); TextView text = (TextView) convertView.findViewById(R.id.expanable_text); text.setText(parentList[groupPosition]); return convertView; } @Override public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { if (convertView == null) { LayoutInflater inflater = (LayoutInflater) MainActivity .this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); convertView = inflater.inflate(R.layout.child_item, null); } convertView.setTag(R.layout.parent_item, groupPosition); convertView.setTag(R.layout.child_item, childPosition); TextView text = (TextView) convertView.findViewById(R.id.child_title); text.setText(dataset.get(parentList[groupPosition]).get(childPosition)); return convertView; }
重点是这两个方法类似于recycle让view中的getview的方法
在判断conview为空后首先做的就是创建Layoutinflatar的一个类的服务听