Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ListView单击更改视图属性_Android_Android Listview - Fatal编程技术网

Android ListView单击更改视图属性

Android ListView单击更改视图属性,android,android-listview,Android,Android Listview,我拥有的:一个带有自定义适配器的自定义listview,以及一个自定义ListViewItem(扩展了LinearLayout) 我想做什么:当选择listbox项时,我想更改所选视图的可绘制背景 发生了什么:目前什么都没有。祝酒词确实看起来像它应该的样子,但是背景画没有改变。我尝试调用View.Invalidate(),但这似乎也没有任何作用 下面是一段应该用来更改可绘制图形的代码: public void onItemClick(AdapterView<?> arg0, View

我拥有的:一个带有自定义适配器的自定义listview,以及一个自定义ListViewItem(扩展了LinearLayout)

我想做什么:当选择listbox项时,我想更改所选视图的可绘制背景

发生了什么:目前什么都没有。祝酒词确实看起来像它应该的样子,但是背景画没有改变。我尝试调用View.Invalidate(),但这似乎也没有任何作用

下面是一段应该用来更改可绘制图形的代码:

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事件返回的视图。嗯,有时您所需要的只是一双额外的眼睛干杯