0

我已经实现了一个部分标题列表视图,我在其中膨胀了一个布局,其中包含三个文本视图作为项目。我在这里引用了这个例子来实现它。

我的代码是

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”的文本颜色。我没有在布局中的任何地方定义文本视图。我只是将其称为简单适配器参数。如何更改文本视图颜色默认为白色。任何建议的答案都非常感谢。

4

1 回答 1

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 的句柄,然后从该句柄设置其颜色。您需要在代码中以可运行的 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);

(上面是 MonoDroid 的 C# 代码,可轻松转换为 Java)。

在 Java/Android 中发布可运行文件:如何在 Android 中运行可运行线程?

在 runnables 中发布会将代码放入消息队列中,这是 Android 中一个关键的、未记录的构造。每当您在修改视图时从活动中获得空引用时,请尝试将此作为第一步。

于 2012-12-13T14:02:30.800 回答