Android 具有自定义子级的可扩展listview
是否可以只在可扩展父级的一个子级中添加按钮 如下图所示:Android 具有自定义子级的可扩展listview,android,expandablelistview,Android,Expandablelistview,是否可以只在可扩展父级的一个子级中添加按钮 如下图所示: 编辑: 好的,这是通过适配器实现的方法: static class ViewHolder { TextView textView; Button button1, button2; } @Override public int getChildTypeCount() { return 2; } @Override public int getChildType(int groupPosition, int ch
编辑: 好的,这是通过适配器实现的方法:
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;
}
这里需要注意的几点:
- 列表使用convertView重新使用视图,但现在有两种不同类型的视图(第一视图和其他视图)。这意味着两种不同类型的视图
- 为了迫使列表认为有两种类型的视图,我们覆盖了
和getChildTypeCount
getChildType
- 我们重复使用默认的ViewHolder类,并填充2个可选的按钮视图。这些仅为第一个孩子的视图设置
getChildType
,并询问:“这是什么类型的?”
如果只有一种类型(默认情况下),那么适配器将无法区分它们,并将在不应该重复使用第一个子布局的地方重复使用它们
有一张很好的图片,解释了视图的重复使用方式
希望这有点澄清:-)快乐编码 是,如果子项的索引为0,则将这些按钮的可见性设置为可见(通常它们不存在)。这就是你们的意思,你们的意思是说,设置按钮(在去模式)为所有的孩子,但只是设置为第一个孩子可见?完全正确。在子行布局xml中,将可见性设置为
GONE
。在代码中,将可见性设置为View.VISIBLE
仅对第一个子级(索引为0)可见<代码>消失了不占用空间,因此按钮好像不在布局中。直到你们把它们变为可见。你们能帮我怎么给孩子充气吗?我有充气的问题。所以Tanx@saeid您正在使用自定义适配器吗?是的,我使用此示例:确定-我使用此示例:if(childPosition==0&&groupPosition==0){LayoutInflater=(LayoutInflater)this.\u context.getSystemService(context.layou\u INFLATER\u SERVICE);convertView=INFLATER.inflate(R.layou.ex\u list\u item2,null);}。。。但不要在正确的孩子(第一个孩子)中膨胀太好了,这很有帮助,而且工作正常,但有个问题!!?-我以前用这种方式跟你一模一样但是没有getChildTypeCount&getChildType,由于这个原因,我总是收到错误;那么,你能解释我getChildType只是为了让它工作的感觉吗黑褐色