Reputation: 2321
it possible to add Button just in One child of a expandable parent?
Like Bellow image :
Upvotes: 1
Views: 1675
Reputation: 44118
EDIT:
Okay, this is how you can accomplish this through an adapter:
static class ViewHolder {
TextView textView;
Button button1, button2;
}
@Override
public int getChildTypeCount() {
return 2;
}
@Override
public int getChildType(int groupPosition, int childPosition) {
if (childPosition == 0)
return 0;
else
return 1;
}
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
if (childPosition == 0) {
// 1st view specifics here
convertView = mInflater.inflate(R.layout.exp_list_child_2, parent, false);
holder.button1 = (Button) convertView.findViewById(R.id.button1);
holder.button2 = (Button) convertView.findViewById(R.id.button2);
holder.button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(mContext, "Some action here", Toast.LENGTH_SHORT).show();
}
});
} else {
// Other views
convertView = mInflater.inflate(R.layout.exp_list_child, parent, false);
}
holder.textView = (TextView) convertView.findViewById(R.id.childItem);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.textView.setText("Use your data here for other items");
return convertView;
}
Few things to note here:
getChildTypeCount
and getChildType
The solution that @FrankN.Stein offered is also eligible. I'm not sure which one is better performance-wise (you'll have to test it yourself). Still, keep in mind that even though GONE views are invisible and don't take up any space in the layout, they are still present in the view hierarchy and the memory.
EDIT2:
When the adapter re-uses the views, it has to know which view to get. So it calls getChildType
with child's position and asks: "What type is this"?
If there was only a single type(that's by default), then the adapter couldn't distinguish between them and would re-use your 1st-child-layout in places where it shouldn't be.
This answer has a nice picture which explains how the view's are re-used.
Hope this somewhat clears it up :-) Happy coding !
Upvotes: 2