我基本上想知道更改 android 中 ListView 颜色的最佳方法。这是所发生情况的基本解释,我获取列表的数据并填充它,然后我针对 ListView 的文本运行情绪分析 api,在情绪收集的 onPostExecute 中,然后我想更改颜色 ListView 绿色表示正,红色表示负。
我已经在 onPostExecute 方法中检查了我的字符串列表,并像这样添加了正值、负值和中性值。
for(int index = 0; index<sentiments.size();index++)
{
if(sentiments.get(index).contains("positive"))
{
occurrencesPos++;
//ViewTweet.getChildAt(index).setBackgroundColor(Color.GREEN);
}
if(sentiments.get(index).contains("negative"))
{
occurrencesNeg++;
}
if(sentiments.get(index).contains("neutral"))
{
occurrencesNeu++;
}
请注意,注释掉的行对我不起作用,因为它只适用于可见实体的子项,即前 5 个实体,但有时我的列表会超过 50 个。然而,如果我只搜索 5 个数据项的列表,它就会达到所需的效果。
列表填充如下:这是在 onPostExecute 方法中的单独 aSyncTask 中执行的。
ArrayList<Map<String, String>> list = buildData();
String[] from = { "name", "content" };
int[] to = { android.R.id.text1, android.R.id.text2 };
SimpleAdapter adapter = new SimpleAdapter(activity, list,
layout.list_layout, from, to);
setListAdapter(adapter);
// Creation of content to be added to be displayed in list
private ArrayList<Map<String, String>> buildData() {
ArrayList<Map<String, String>> list = new ArrayList<Map<String, String>>();
for(int i = 0;i<tweetContent.size();i++)
{
list.add(putData("@"+usernames.get(i),tweetContent.get(i)));
}
return list;
}
private HashMap<String, String> putData(String string, String string2) {
HashMap<String, String> item = new HashMap<String, String>();
item.put("name", string);
item.put("content", string2);
return item;
}
简而言之,发生了什么,使用 api 调用从 twitter 获取推文,将值传递到两个字符串列表 tweetcontent 和 username,然后用于填充列表,填充列表后,我调用第二个异步任务,该任务调用情感分析 api,我将结果放入一个新的字符串列表中,并计算 pos、neg、neu 出现的数量以传递给图表,但我想更新列表颜色以匹配这些正负值和中性值第二个onPostExecute,这可能吗?
最佳答案
为什么不创建一个数组并将每个项目的颜色存储在其中,然后在获取 View 中将该颜色指定为背景颜色。
关于java - 在执行某些操作后设置 ListView 背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22618698/