当前位置:编程学习 > JAVA >>

如何给ExpandableListView的child注册registerForContextMenu()?

public class MyExpandableAdapter extends BaseExpandableListAdapter {

private Context mContext = null; 
public List<? extends Map<String, ?>> mGroups = null;
ArrayList<List<HashMap<String, Object>>> mChilds =null; 

public MyExpandableAdapter(Context context,
    List<Map<String, String>> groupData, int expandedGroupLayout, String[] groupFrom,
int[] groupTo, ArrayList<List<HashMap<String, Object>>> childData,
int childLayout, String[] childFrom, int[] childTo) {
// TODO Auto-generated constructor stub
super();
  this.mGroups = groupData;
  this.mChilds= childData;
  this.mContext=context; 
  }
  
  

@Override
public Object getChild(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return mChilds.get(groupPosition).get(childPosition);
}

@Override
public long getChildId(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return childPosition;
}


@SuppressWarnings("unchecked")
@Override
public View getChildView(int groupPosition, int childPosition,
boolean isLastChild, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
 
      
    
    String text = ((Map<String, String>) getChild(groupPosition, childPosition)).get("mp3Name");
    LayoutInflater layoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  //获取二级列表对应的布局文件, 并将其各元素设置相应的属性
    LinearLayout linearLayout = (LinearLayout) layoutInflater.inflate(R.drawable.childs, null);
    TextView tv = (TextView) linearLayout.findViewById(R.id.mp3Name);
    tv.setText(text);
    

    return linearLayout; 
}
//返回childPosition的mp3Name
@SuppressWarnings("unchecked")
public String getChildName(int groupPosition, int childPosition){
return ((Map<String, String>) getChild(groupPosition, childPosition)).get("mp3Name");
}

@Override
public int getChildrenCount(int groupPosition) {
// TODO Auto-generated method stub
return mChilds.get(groupPosition).size();
}

@Override
public Object getGroup(int groupPosition) {
// TODO Auto-generated method stub
return mGroups.get(groupPosition);
}

@Override
public int getGroupCount() {
// TODO Auto-generated method stub
return mGroups.size();
}

@Override
public long getGroupId(int groupPosition) {
// TODO Auto-generated method stub
return groupPosition;
}

@Override
public View getGroupView(int groupPosition, boolean isExpanded,
View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
      String text = (String) mGroups.get(groupPosition).get("group");
  LayoutInflater layoutInflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  
  //获取一级列表布局文件,设置相应元素属性
  LinearLayout linearLayout = (LinearLayout) layoutInflater.inflate(R.drawable.groups, null);
  TextView textView = (TextView)linearLayout.findViewById(R.id.textGroup);
  textView.setText(text);
return linearLayout; 
}

@Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return false;
}

@Override
public boolean isChildSelectable(int groupPosition, int childPosition) {
// TODO Auto-generated method stub
return true;
}


@Override
public boolean areAllItemsEnabled() {
// TODO Auto-generated method stub
return false;
}



@Override
public void registerDataSetObserver(DataSetObserver observer) {
// TODO Auto-generated method stub
super.registerDataSetObserver(observer);
}



@Override
public boolean isEmpty() {
// TODO Auto-generated method stub
return super.isEmpty();
}

}
重写BaseExpandableListAdapter 如何得到 孩子(child)视图,我想把子视图放进去registerForContextMenu();
如果registerForContextMenu(getExpandableListView()); 它会为所有item注册监听...QQ好友列表,长按好友会弹出Menu但长按组就不会,这样怎么实现啊?求助!!!help!!!! --------------------编程问答-------------------- 发现是组的就return不就可以了
补充:Java ,  Eclipse
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,