gpt4 book ai didi

android - 滚动ListView后,ListView View 底部的按钮收不到事件

转载 作者:行者123 更新时间:2023-11-29 18:18:17 24 4
gpt4 key购买 nike

我有一个 ListView ,每一行都包含一个复选框和文本。我已经成功地向 ListView 的页脚添加了一个“回答”按钮,该按钮接收事件并显示一条 toast 消息,说您单击了保存按钮。问题是如果 ListView 是可滚动的并且我上下滚动 ListView 几次,则底部的“应答”按钮不再处于 Activity 状态(至少在模拟器中)。行为似乎是按钮根本不响应任何事件。但是,选中/取消选中 ListView 项中的复选框将导致触发 Answer 按钮的 setOnClickListener 事件。

View footer = View.inflate(this,R.layout.footer, null);
getListView().addFooterView(footer,null, true);
Button btnAnswer = (Button)footer.findViewById(R.id.btnAnswer);

btnAnswer.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
Toast.makeText(getApplicationContext()," You clicked Save button", Toast.LENGTH_SHORT).show();
}
});

最佳答案

ListViews 为每个列表项“重新使用” subview 以节省内存消耗、时间等,而不是为每个项目重新创建新 View 。您正在设置 OnClickListener;但是,当您滚动页脚时, View 将重新用于另一个列表项,因此 OnClickListener 无效。

您需要扩展您的 ListAdapter 并覆盖 getView 方法,您将在其中检查页脚 View 并设置适当的监听器(如果是)。

类似于:

setListAdapter(new ArrayAdapter<string>(this, R.layout.list_item, strings) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// Unless you want to set each child views individually, call
// the super
convertView = super.getView(position, convertView, parent);

// Check if it's the footer view
if(position == this.getCount() - 1) {
// Set the listener here
}

return convertView;
}
});

关于android - 滚动ListView后,ListView View 底部的按钮收不到事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6968998/

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