我已经实现了一个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颜色默认是白色的。任何建议的答案都非常感谢。
答案 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中的一个密钥,未记录的构造。任何时候在修改视图时从活动中获得空引用,请尝试将其作为第一步。