gpt4 book ai didi

Android ListView OnItemClick 更改 View 属性

转载 作者:行者123 更新时间:2023-11-29 02:14:47 26 4
gpt4 key购买 nike

我有什么:带有自定义适配器的自定义 ListView ,带有自定义 ListViewItem(扩展了 LinearLayout)

我想做什么当列表框项目被选中时,我想更改所选 View 的背景可绘制对象。

发生了什么:目前没有。 Toast 确实出现了,但 Background drawable 并没有改变。我尝试调用 View.Invalidate() 但这似乎也没有做任何事情。

这是应该更改可绘制对象的代码 fragment :

public void onItemClick(AdapterView<?> arg0, View view, int index, long arg3) 
{
Card card = CardVM.GetCurrentCards().get(index);
card.setBlocked(!card.isBlocked());
if (card.isBlocked())
{
view.setBackgroundResource(R.drawable.bluegradient);
Toast.makeText(this, "Card is now Blocked", 1).show();
}
else
{
view.setBackgroundResource(R.drawable.greengradient);
Toast.makeText(this, "Card is now Available", 1).show();
}
}

切换功能确实有效,如果您第一次点击它,它会说“卡现在被阻止”。第二次显示“Card is now available”……等等。 setBackgroundResource 根本不起作用。

此外,当 ListView 被填充时,背景颜色设置正确(使用相同的资源和相同的功能)。

提前致谢。

更新

看起来背景确实发生了变化,但前提是屏幕被迫重新绘制它。例如,当您单击列表中的第一个项目将其变为蓝色时,您需要向下滚动(使其离开屏幕)然后向上滚动。然后它变成蓝色。我们能以某种方式避免这种情况吗?

最佳答案

使用 AdapterView.OnItemSelectedListener() 和类似 view.setBackgroundDrawable(getResources().getDrawable(R.drawable.listview_item_selected));

编辑:

使布局而不是单个 View 无效。

关于Android ListView OnItemClick 更改 View 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4910517/

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