0

我在与上一个问题的背景下提出问题

我有以下代码:

CallSoap cs=new CallSoap();


            lst=cs.GetMessage(id);
            lstNew=cs.GetNewMessage(id);

            int numOfMessages=lst.length-lstNew.length;  

            ArrayAdapter<String> adpt = new ArrayAdapter<String>(Messages.this, android.R.layout.simple_list_item_1,lst);
            lm.setAdapter(adpt);

            for (int i=0;i<numOfMessages;i++)
            {
                lm.
            }

我在变量中获得了新消息的数量:numOfMessages

lm 是我listview

ListView lm=(ListView)findViewById(R.id.listView1);

假设numOfMessages=3,那么我只想将我的列表视图(lm)的前 3 个元素的文本颜色设为红色。

在这种情况下,请帮助我如何在这个循环中做到这一点。

4

4 回答 4

2

您必须在适配器中执行此操作。创建扩展基本适配器的自定义适配器,然后您可以检查列表项的位置并应用您想要的任何颜色。

在这里检查:列表视图的自定义适配器

于 2013-08-26T09:46:17.063 回答
2

只需确保实际 3 个项目的索引是正确的,因为 CustomAdapter 将回收 Listview 视图,从而为屏幕上当前可见的项目或适配器进行的一些附近计算提供相对索引。

另一种方法是操纵实际数据集合以包含一个标志,该标志表示特殊条件,然后在适配器的 getView() 方法中,询问当前项目的标志并修改该特定视图

于 2013-08-26T09:52:47.967 回答
1

您应该通过扩展 BaseAdapter 类而不是使用 ArrayAdapter 来使用自定义的列表适配器。并且在BaseAdapter 中的getView() 方法中,可以根据item 的位置指定某个item 的颜色。

祝你好运!

于 2013-08-26T09:54:05.460 回答
1

尝试添加唯一 ID 或上次获取时间的附加列,下次将数据库与新的获取 ID 或时间进行比较,并根据行中的显示颜色。

于 2013-08-26T12:51:57.233 回答