【问题标题】:Listview row color not changed from asynctaskListview 行颜色未从 asynctask 更改
【发布时间】:2015-06-24 18:52:09
【问题描述】:

我正在尝试从异步任务后执行方法更新列表视图的颜色。

我在做((View) lstChoices.getAdapter().getView(0,null, lstChoices)).setBackgroundColor(Color.RED);

但这并没有做任何事情,但是我在自定义适配器的 getView 方法中尝试了相同的方法,然后它起作用了,row.setBackgroundColor(Color.RED); 任何想法我做错了什么?

谢谢

【问题讨论】:

  • 您不应该手动更改视图背景,您应该使用选择器作为背景并使用listview.setItemChecked()
  • 我想更新列表视图的行背景颜色以表示结果
  • 您可以使用选择器并使用 setItemChecked 来做到这一点

标签: android listview android-listview android-asynctask android-drawable


【解决方案1】:

你不应该这样改变。所有与该行相关的内容都应在适配器中处理。这意味着如果您更改了任何可能影响背景颜色的内容,那么您应该做的就是notifyDatsetChanged(),这将触发列表重绘。然后 b/g 颜色应该由适配器更改。

【讨论】:

  • 那么,在notifyDatsetChanged()之后,会调用adapter的getView方法吗?
  • notifyDatasetChanged() 告诉适配器,嗯...它列出的数据已更改,这将触发列表重绘,因为列表希望在更改后反映当前数据。并且 redraw 将为每个可见行调用getView()
【解决方案2】:

基于项目的状态,Listview项目背景颜色变化的一个非常清晰的方法是Programmatically select item ListView in Android

由于您正在寻找“后执行”,因此可能会更改项目的状态并使用该方法可以帮助您获得所需的内容。

【讨论】:

    猜你喜欢
    • 2012-04-09
    • 2013-02-27
    • 1970-01-01
    • 2017-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-04
    相关资源
    最近更新 更多