gpt4 book ai didi

java - 如何禁用连接到 ArrayAdapter 的 ListView 行中的按钮?

转载 作者:行者123 更新时间:2023-12-02 02:25:20 26 4
gpt4 key购买 nike

我的类 ProductAdapter 扩展了 ArrayAdapter在 getView 上,我在每行中使用 2 个按钮(+)和(-)来膨胀行并为每个按钮设置 anonim OnClickListener,如下所示:

 viewHolder.removeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
BigDecimal count = product.getCount().subtract(BigDecimal.ONE);
if (count.signum() < 0) count = BigDecimal.ZERO;
product.setCount(count);
viewHolder.countView.setText(formatValue(count, product.getUnit()));
mListener.onCardClick(v);
}
});

在 Activity 中,当我使用每行的整数值时,我需要执行一些 AsyncTask 。问题是当 AsyncTask 执行用户仍然可以更改产品适配器(按钮正在工作)。我需要在 AsyncTask 工作时禁用它们,然后在完成后重新启用。我试图禁用 ListView 但没有成功。我也试图重写 ArrayAdapter 方法 isAllEnadled 和 isEnabled 也没有运气。

最佳答案

有趣的问题,你需要一个State和一个保存它的地方,这个State可以用来控制点击行为。您可以将其保存产品本身其他位置,例如与该索引对应的列表

类似

protected void onPreExecute(Void result) {
product.setFetching(true)
}


protected void onPostExecute(Void result) {
product.setFetching(false)
}

onClick()中,您可以检查相同内容并像这样返回

if (product.isFetching())
return;

关于java - 如何禁用连接到 ArrayAdapter 的 ListView 行中的按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47871778/

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