Android ListView单击更改视图属性
我拥有的:一个带有自定义适配器的自定义listview,以及一个自定义ListViewItem(扩展了LinearLayout) 我想做什么:当选择listbox项时,我想更改所选视图的可绘制背景 发生了什么:目前什么都没有。祝酒词确实看起来像它应该的样子,但是背景画没有改变。我尝试调用View.Invalidate(),但这似乎也没有任何作用 下面是一段应该用来更改可绘制图形的代码:Android ListView单击更改视图属性,android,android-listview,Android,Android Listview,我拥有的:一个带有自定义适配器的自定义listview,以及一个自定义ListViewItem(扩展了LinearLayout) 我想做什么:当选择listbox项时,我想更改所选视图的可绘制背景 发生了什么:目前什么都没有。祝酒词确实看起来像它应该的样子,但是背景画没有改变。我尝试调用View.Invalidate(),但这似乎也没有任何作用 下面是一段应该用来更改可绘制图形的代码: public void onItemClick(AdapterView<?> arg0, View
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();
}
}
public void onItemClick(AdapterView arg0、视图视图、int索引、长arg3)
{
Card Card=CardVM.GetCurrentCards().get(索引);
card.setBlocked(!card.isBlocked());
if(card.isBlocked())
{
视图.setBackgroundResource(R.drawable.bluegradient);
Toast.makeText(此“卡现在已被阻止”,1.show();
}
其他的
{
视图.背景资源(R.可绘制.绿色梯度);
Toast.makeText(此“卡片现在可用”,1.show();
}
}
切换功能确实有效,如果您第一次单击它,它会显示“卡现在被阻止”。第二次显示“卡现在可用”。。。等等setBackgroundResource根本不起作用
此外,填充列表视图时,背景颜色设置正确(使用相同的资源和相同的功能)
提前谢谢
更新
只有在强制屏幕重新绘制背景时,背景才会发生变化。例如,当您单击列表中的第一个项目将其变为蓝色时,您需要向下滚动(将其从屏幕上移出),然后再向上滚动。然后它变成蓝色。我们能以某种方式避免这种情况吗?使用
AdapterView.OnItemSelectedListener()
或者类似于view.setBackgroundDrawable(getResources().getDrawable(R.drawable.listview_item_selected))代码>
编辑:
使布局无效,而不是单个视图。我发布的内容也适用于onItemClick
。我相信你的问题可能是挫折资源。。。使用setBackgroundDrawable
。。。我知道它有效,我自己也用过。我也试过。它产生了同样的结果你在否定哪种观点?使布局无效,而不是单个视图。我们正在单击的视图。从onItemClick事件返回的视图。嗯,有时您所需要的只是一双额外的眼睛干杯