可扩展列表视图setOnChildClickListener无法正常工作

时间:2013-10-17 11:10:49

标签: android android-listview expandablelistview

我正在使用可扩展的列表视图。我在onceate方法中给出了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不能正常工作

3 个答案:

答案 0 :(得分:30)

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

答案 1 :(得分:9)

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

答案 2 :(得分:0)

@Jesbin MJ你救了我的命!

请对遇到类似问题的人:删除clickable =&#34; true&#34;布局属性!!!它终于为我工作了:))