2012-04-23 143 views
0

我想改变我的ListView项目的颜色(使用Async类填充),具体取决于一个变量。所以,我有这个更改android listview项目的前景色

public class Search extends AsyncTask<Void, String, Void> { 
    boolean blue = false; 
    @Override 
    protected Void doInBackground(Void... params) { 
     Resources res = getResources(); 
     List<String> Items = Arrays.asList(res.getStringArray(R.array.Items)); 
     for (String it : Items) { 
      if (it.contains("blue")) { blue = true; } else { blue = false; }  
      publishProgress(it); 
     } 
     return null; 
    } 

    @SuppressWarnings("unchecked") 
    @Override 
    protected void onProgressUpdate(String... item) { 
     ((ArrayAdapter<String>)getListAdapter()).add(item[0]); 
     // Change the color of the current item depending on "blue" 
    } 
} 

这可能吗?谢谢!

回答

1

您需要在自定义适配器中覆盖getView,并提供自己的自定义视图。

+0

在哪个类中,或者在哪里? – ali 2012-04-24 09:02:06

+0

扩展BaseAdapter或其他适配器。 – 2012-04-25 03:29:37

0

当然,您可以添加元素到您的阵列适配器。但是有几个问题需要照顾:

  1. 通在一个ArrayList或其他任何东西,你其实可以在
  2. 调用add不要忘记调用setNotifyOnChange(真);

所以一般应该这样做。然而,我不确定我是否明白为什么以及您在使用添加项目的AsyncTask做什么...

为什么不在创建ListView时添加它们?有什么我错过了吗?

+0

我删除了这个问题的一些不必要的代码。 AsynkTask也会过滤这些项目,但我没有包含该代码 – ali 2012-04-24 08:55:53

相关问题