gpt4 book ai didi

android - 带有自定义子项的可扩展 ListView

转载 作者:行者123 更新时间:2023-11-29 21:04:34 26 4
gpt4 key购买 nike

是否可以只在可扩展父项的一个子项中添加按钮?

喜欢下面的图片:

enter image description here

最佳答案

编辑:

好的,这就是您可以通过适配器完成此操作的方法:

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 重新使用 View ,但现在您有 2 种不同类型的 View (第一种 View 和其他 View )。这意味着 2 种不同类型的 convertView。
  • 为了强制列表认为有两种类型的 View ,我们覆盖了 getChildTypeCountgetChildType
  • 我们重新使用默认的 ViewHolder 类并填充 2 个可选按钮 View 。这些设置仅供第一个 child 观看。

@FrankN.Stein 提供的解决方案也符合条件。我不确定哪一个在性能方面更好(你必须自己测试)。尽管如此,请记住,即使 GONE View 不可见并且不占用布局中的任何空间,它们仍然存在于 View 层次结构和内存中。

EDIT2:

当适配器重新使用 View 时,它必须知道要获取哪个 View 。因此它调用带有子位置的 getChildType 并询问:“这是什么类型”?

如果只有一种类型(默认情况下),则适配器无法区分它们,并且会在不应该使用的地方重新使用您的 1st-child-layout。

This answer有一张漂亮的图片,解释了如何重用 View 。

希望这有点清除它:-)编码愉快!

关于android - 带有自定义子项的可扩展 ListView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24971876/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com