我在上一期question
的背景下提出问题我有以下代码:
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
,那么我只想将listview(lm)的前3个元素的文本颜色设为红色。
请帮助我在这种循环中如何做到这一点。
答案 0 :(得分:2)
您必须在适配器中执行此操作。创建扩展基本适配器的自定义适配器,然后您可以检查列表项的位置并应用您想要的任何颜色。
答案 1 :(得分:2)
确保实际的3项索引是正确的,因为CustomAdapter将回收Listview视图,从而为屏幕上当前可见的项目或适配器附近的某些计算提供相对索引。
另一种方法是操纵实际数据集合以包含一个标志,该标志声明一个特殊条件,然后在适配器的getView()方法中,询问当前项目的标志并修改该特定视图
答案 2 :(得分:1)
您应该通过扩展BaseAdapter类而不是使用ArrayAdapter来使用自定义列表适配器。在BaseAdapter中的getView()方法中,您可以根据项目的位置指定特定项目的颜色。
祝你好运!答案 3 :(得分:1)
尝试实现额外的唯一ID列或最后一次获取时间,然后下次将数据库与新的获取ID或时间进行比较,并根据行中的显示颜色进行比较..