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
In your adapter class return the true value in isChildSelectable() method.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With