Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Expandable list view setOnChildClickListener not working

I m using an expandable listview. i given setOnChildClickListener inside the onceate method, but the setOnChildClickListener is not working, i was searching for the solution in SO but i cannot find any solution. here giving what i had done

  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;
 }

}
 }

please help me why setOnChildClickListener is not working

like image 434
Jesbin MJ Avatar asked Oct 17 '13 11:10

Jesbin MJ


1 Answers

In your adapter class return the true value in isChildSelectable() method.

like image 160
Arunraj Jeyaraj Avatar answered Oct 27 '22 19:10

Arunraj Jeyaraj