16

我正在使用可扩展的列表视图。我在 oneate 方法中给出了 setOnChildClickListener,但 setOnChildClickListener 不起作用,我在 SO 中搜索解决方案,但找不到任何解决方案。在这里给出我所做的

  public class MenuActivity extends Activity{
    ArrayList<MyObject> CatList = new ArrayList<MyObject>();
    ArrayList<Object> childItem = new ArrayList<Object>();
    ExpandableListView ExList;

  @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
             setContentView(R.layout.menuactivity);

         ExList=(ExpandableListView) findViewById(R.id.lvMenu) ;


           ExList.setOnChildClickListener(new OnChildClickListener() {

            @Override
            public boolean onChildClick(ExpandableListView parent, View v,
                    int groupPosition, int childPosition, long id) {

                  ShowItem(CatList.get(childPosition).getId());

                  Toast.makeText(context, ""+CatList.get(childPosition).getId(), 1).show();
                // TODO Auto-generated method stub
                return false;
            }
        });

    }


 public void ShowItem(int id)
 {
   // do something
 }

  public class ElistAdapt extends BaseExpandableListAdapter  {

 public ArrayList<MyObject> groupItem, tempGrpChild;
 public ArrayList<Object> Childtem = new ArrayList<Object>();
 public LayoutInflater minflater;
 public Activity activity;


 public ElistAdapt(ArrayList<MyObject> GroupList, ArrayList<Object> childItem) {
  groupItem = GroupList;
  this.Childtem = childItem;
 }

 public void setInflater(LayoutInflater mInflater, Activity act) {
  this.minflater = mInflater;
  activity = act;
 }

 @Override
 public Object getChild(int groupPosition, int childPosition) {
  return null;
 }

 @Override
 public long getChildId(int groupPosition, int childPosition) {
  return 0;
 }

 @Override
 public View getChildView(final int groupPosition, final int childPosition,
   boolean isLastChild, View convertView, ViewGroup parent) {
  tempGrpChild = (ArrayList<MyObject>) Childtem.get(groupPosition);
  TextView text = null;
  TextView text2 = null;
  if (convertView == null) {
   convertView = minflater.inflate(R.layout.childrow, null);
  }
  text = (TextView) convertView.findViewById(R.id.textView1);
  text2 = (TextView) convertView.findViewById(R.id.textView2);
  text.setText(tempGrpChild.get(childPosition).getName());
  text2.setText(tempGrpChild.get(childPosition).getPrice());

  return convertView;  
 }

 @Override
 public int getChildrenCount(int groupPosition) {
  return ((ArrayList<MyObject>) Childtem.get(groupPosition)).size();
 }

 @Override
 public Object getGroup(int groupPosition) {
//  return null;
  return this.groupItem.get(groupPosition);
 }

 @Override
 public int getGroupCount() {
  return groupItem.size();
 }

 @Override
 public void onGroupCollapsed(int groupPosition) {
  super.onGroupCollapsed(groupPosition);
 }

 @Override
 public void onGroupExpanded(int groupPosition) {
  super.onGroupExpanded(groupPosition);
 }

 @Override
 public long getGroupId(int groupPosition) {
  return 0;
 }

 @Override
 public View getGroupView(final int groupPosition, boolean isExpanded,
   View convertView, ViewGroup parent) {

     if (convertView == null) 
          {
            LayoutInflater inflater =  (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.grouprow, null);
           }

           TextView tvGroupName = (TextView) convertView.findViewById(R.id.textView1);
           tvGroupName.setText(groupItem.get(groupPosition).getName());


  return convertView;
 }

 @Override
 public boolean hasStableIds() {
  return false;
 }

 @Override
 public boolean isChildSelectable(int groupPosition, int childPosition) {
  return true;
 }

}
 }

请帮助我为什么 setOnChildClickListener 不起作用

4

2 回答 2

34

在您的适配器类中,在 isChildSelectable() 方法中返回真值。

于 2014-01-22T11:13:28.487 回答
12

最后我让它工作了,我从 R.layout.childrow xml 中删除了可点击的、可聚焦的。现在它工作正常

于 2013-10-18T06:42:13.130 回答