Android仿QQ好友列表分组实现增删改及持久化

2019-12-10 19:14:55于海丽

MyAdapter.java自定义适配器

package com.eric.grouplistdemo; 
 
import java.util.List; 
import java.util.Map; 
 
import android.content.Context; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.ViewGroup; 
import android.widget.BaseExpandableListAdapter; 
import android.widget.EditText; 
import android.widget.ImageView; 
import android.widget.TextView; 
 
public class MyAdapter extends BaseExpandableListAdapter{ 
 private List<String> parentList; 
 private Map<String,List<String>> map; 
 private Context context; 
 private EditText edit_modify; 
 private ModifyDialog dialog; 
  
 //构造函数 
 public MyAdapter(Context context, List<String> parentList, Map<String,List<String>> map) { 
  this.context = context; 
  this.parentList = parentList; 
  this.map = map; 
 } 
  
 //获取分组数 
 @Override 
 public int getGroupCount() { 
  return parentList.size(); 
 } 
 //获取当前组的子项数 
 @Override 
 public int getChildrenCount(int groupPosition) { 
  String groupName = parentList.get(groupPosition); 
  int childCount = map.get(groupName).size(); 
  return childCount; 
 } 
 //获取当前组对象 
 @Override 
 public Object getGroup(int groupPosition) { 
  String groupName = parentList.get(groupPosition); 
  return groupName; 
 } 
 //获取当前子项对象 
 @Override 
 public Object getChild(int groupPosition, int childPosition) { 
  String groupName = parentList.get(groupPosition); 
  String chidlName = map.get(groupName).get(childPosition); 
  return chidlName; 
 } 
 //获取组ID 
 @Override 
 public long getGroupId(int groupPosition) { 
  return groupPosition; 
 } 
 //获取子项ID 
 @Override 
 public long getChildId(int groupPosition, int childPosition) { 
  return childPosition; 
 } 
 
 @Override 
 public boolean hasStableIds() { 
  return true; 
 } 
 //组视图初始化 
 @Override 
 public View getGroupView(int groupPosition, boolean isExpanded, 
   View convertView, ViewGroup parent) { 
  final int groupPos = groupPosition; 
   
  if(convertView == null){ 
   convertView = LayoutInflater.from(context).inflate(R.layout.list_item_parent, null); 
  } 
   
  ImageView image = (ImageView) convertView.findViewById(R.id.image_parent); 
  ImageView image_add = (ImageView) convertView.findViewById(R.id.image_add); 
  ImageView image_delete = (ImageView) convertView.findViewById(R.id.image_delete); 
   
  if(isExpanded){ 
   image.setImageResource(R.drawable.image_parent2); 
  }else{ 
   image.setImageResource(R.drawable.image_parent1); 
  } 
   
  image_add.setOnClickListener(new OnClickListener() { 
   @Override 
   public void onClick(View v) { 
    alertAddDialog(MainActivity.fragment.getActivity(), "新增子项", groupPos); 
   } 
  }); 
  image_delete.setOnClickListener(new OnClickListener() { 
   @Override 
   public void onClick(View v) { 
    GroupListFragment.deleteGroup(groupPos); 
   } 
  }); 
   
   
  TextView parentText = (TextView) convertView.findViewById(R.id.text_parent); 
  parentText.setText(parentList.get(groupPosition)); 
  return convertView; 
 } 
 //子项视图初始化 
 @Override 
 public View getChildView(int groupPosition, int childPosition, 
   boolean isLastChild, View convertView, ViewGroup parent) { 
  final int groupPos = groupPosition; 
  final int childPos = childPosition; 
   
  if(convertView == null){ 
   convertView = LayoutInflater.from(context).inflate(R.layout.list_item_child, null); 
  } 
  TextView childText = (TextView) convertView.findViewById(R.id.text_child); 
  ImageView image_delete = (ImageView) convertView.findViewById(R.id.image_delete); 
  String parentName = parentList.get(groupPosition); 
  String childName = map.get(parentName).get(childPosition); 
  childText.setText(childName); 
   
  image_delete.setOnClickListener(new OnClickListener() { 
   @Override 
   public void onClick(View v) { 
    GroupListFragment.deleteChild(groupPos, childPos); 
   } 
  }); 
  return convertView; 
 } 
 
 @Override 
 public boolean isChildSelectable(int groupPosition, int childPosition) { 
  return true; 
 } 
  
 //弹新增子项对话框 
 public void alertAddDialog(Context context, String title, int currentGroup){ 
  final int group = currentGroup; 
   
  dialog = new ModifyDialog(context, title, null); 
  edit_modify = dialog.getEditText(); 
  dialog.setOnClickCommitListener(new OnClickListener() { 
   @Override 
   public void onClick(View v) { 
    GroupListFragment.addChild(group, edit_modify.getText().toString()); 
    dialog.dismiss(); 
   } 
  }); 
  dialog.show(); 
 } 
}