gpt4 book ai didi

android - ExpandableListView 中的按钮 - 不寻常的标签行为

转载 作者:行者123 更新时间:2023-11-30 03:27:11 24 4
gpt4 key购买 nike

我正在尝试实现 Android Activity 。它基本上是一个 ExpandableListActivity,除了每个“父”行都应该有一个按钮,该按钮会向其组中添加一个新的子项。单击按钮时,我需要知道它属于哪个父行。

我正在尝试使用按钮中的标记来存储其父行的编号,因此当单击按钮时,我可以简单地使用 getTag()。

我的自定义适配器的代码如下(基于 this question ):

public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { 

if (convertView == null) {
convertView = View.inflate(_context, R.layout.group_row, null);
Button addButton = (Button)convertView.findViewById(R.id.group_button);

addButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
Log.d("ExpListAdp", "Tag: " + view.getTag());
}
});
addButton.setFocusable(false);
}

TextView textView = (TextView)convertView.findViewById(R.id.row_name);
textView.setText(((HashMap)getGroup(groupPosition)).get("Group Item").toString());
Button addButton = (Button)convertView.findViewById(R.id.group_button);
if(addButton.getTag() == null) {
addButton.setTag(Integer.valueOf(groupPosition));
Log.d("ELA", "tag set to " + Integer.valueOf(groupPosition));
}

return convertView;
}

在扩展组之前,这可以正常工作。在那一刻,单击按钮返回的值会根据展开或折叠的组而变化。它始终是预期值之一(即,它始终属于其中一个按钮)——但它很少是它自己的。例如:

Click 0: Logged "Tag:0"
Click 1: Logged "Tag:1"
Click 2: Logged "Tag:2"
Click 3: Logged "Tag:3"
Expand group 1
Click 0: Logged "Tag:0"
Click 1: Logged "Tag:1"
Click 2: Logged "Tag:3"
Click 3: Logged "Tag:2"

标签只被分配一次,即使整个扩展列表都适合屏幕,它也会发生。那么,我的代码是不是哪里错了?或者是否存在与此相关的某种错误,因为他们似乎建议 here

我没有粘贴任何更多的代码,以免使帖子变得更长 - 如果您想查看 xml、 Activity 代码等,请告诉我。

最佳答案

也许 View 正在被回收?即使标签不为空,您也应该对其进行设置。

此外,您可能根本不需要标签;为什么不将该信息作为 onClickListener 的一部分包含在内?

final int buttonPos = groupPosition;
addButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick() {
Log.i("On button click", "Position = %d", buttonPos);
//stuff using buttonPos
}
};

关于android - ExpandableListView 中的按钮 - 不寻常的标签行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18057051/

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