以编程方式为截面标题Listview下的项设置textview颜色

时间:2012-12-13 13:53:56

标签: android

我已经实现了一个Section头Listview,其中我将一个布局中的三个文本视图作为item.i引用了这个示例here来实现它。

我的代码是

adapter.addSection(monthitems2[l], new SimpleAdapter(this, security, R.layout.phone_row, 
                new String[] {"Title", "Caption","val1" }, new int[] { R.id.tvContact, R.id.tvMobile,R.id.tvMail }));

我有一个条件,我需要更改ID“R.id.tvContact”的文本颜色。我没有在thelayout.i中的任何地方定义文本视图刚刚将其称为simpleadapter参数。如何更改textview颜色默认是白色的。任何建议的答案都非常感谢。

1 个答案:

答案 0 :(得分:2)

从参考教程中,您有

SeparatedListAdapter adapter = new SeparatedListAdapter(this);  
adapter.addSection("Array test", new ArrayAdapter<String>(this,  
        R.layout.list_item, new String[] { "First item", "Item two" }));  
adapter.addSection("Security", new SimpleAdapter(this, security, R.layout.list_complex,   
        new String[] { ITEM_TITLE, ITEM_CAPTION }, new int[] { R.id.list_complex_title, R.id.list_complex_caption }));  

ListView list = new ListView(this);  
list.setAdapter(adapter);  
this.setContentView(list);  

获取TextView的句柄,然后从该句柄设置其颜色。你需要张贴 对于消息队列的命令,在runnable,b / c中,此时代码中ListView尚未呈现适配器指向的TextView(这将在OnCreate退出后的某个时间发生)。

list.Post(() => 
{
    TextView tv = list.FindViewById<TextView>(R.id.tvContact);

    tv.SetTextColor(Color.Red);
});

我认为您不需要使用列表限定FindViewById。 b / c你用

设置内容视图
this.setContentView(list);

(上面的代码在C#中用于MonoDroid,可以轻松转换为Java)。

在Java / Android中发布runnables:How to run a Runnable thread in Android?

在runnables中发布会将代码放入消息队列中,这是Android中的一个密钥,未记录的构造。任何时候在修改视图时从活动中获得空引用,请尝试将其作为第一步。