可以在可扩展父级的一个子级中添加Button吗?
像贝娄图像一样:
答案 0 :(得分:2)
编辑:
好的,这是通过适配器实现此目的的方法:
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;
}
这里有几点需要注意:
getChildTypeCount
和getChildType
@ FrankN.Stein提供的解决方案也符合条件。我不确定哪一个性能更好(你必须自己测试)。尽管如此,请记住,即使GONE视图不可见并且不占用布局中的任何空间,它们仍然存在于视图层次结构和内存中。
<强> EDIT2 强>:
当适配器重新使用视图时,它必须知道要获取哪个视图。所以它会调用getChildType
与孩子的位置并问:&#34;这是什么类型&#34;?
如果只有一种类型(默认情况下是这样),则适配器无法区分它们,并且会在不应该使用第一个子布局的地方重新使用第一个子布局。是的。
This answer有一张很好的图片,解释了视图的重复使用方式。
希望这有点清除它:-)快乐的编码!