使用 SimpleCursorAdapter.ViewBinder 更改 Listview 中的文本颜色
我已使用 SimpleCursorAdapter
列出了数据库中的名称,并且想使用 SimpleCursorAdapter.ViewBinder
的方法更改特定名称的颜色。我在运行此方法时遇到问题,我的数据库包含不同的名称,但 ListView
会将所有名称显示为一个特定名称。我做错了什么?如何更改特定名称的文字颜色?可以使用ViewBinder
吗?
这是我的 ViewBinder
代码的一部分:
SimpleCursorAdapter.ViewBinder binder = new SimpleCursorAdapter.ViewBinder() {
@Override
public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
// TODO Auto-generated method stub
String[] temp = dh.return_result();
tv = (TextView)findViewById(R.id.textView1);
tv = (TextView) view;
for(int i = 0; i<temp.length; i++)
{
if(temp[i].equalsIgnoreCase("Ameer Zhann"))
{
tv.setText(temp[i]);
tv.setTextColor(Color.rgb(58, 58, 224));
return true;
}
}
return false;
}
};
这是我的输出图像:
如何我可以解决这个问题吗?
I've listed the names from database using SimpleCursorAdapter
and I want to change the color of a particular name using SimpleCursorAdapter.ViewBinder
's method. I've a problem while running this method, my database contains different names but the ListView
will display all the namse as one particular name. What am I doing wrong? How to change the text color of a specific name? Is it possible using ViewBinder
?
This is my part of of code for ViewBinder
:
SimpleCursorAdapter.ViewBinder binder = new SimpleCursorAdapter.ViewBinder() {
@Override
public boolean setViewValue(View view, Cursor cursor, int columnIndex) {
// TODO Auto-generated method stub
String[] temp = dh.return_result();
tv = (TextView)findViewById(R.id.textView1);
tv = (TextView) view;
for(int i = 0; i<temp.length; i++)
{
if(temp[i].equalsIgnoreCase("Ameer Zhann"))
{
tv.setText(temp[i]);
tv.setTextColor(Color.rgb(58, 58, 224));
return true;
}
}
return false;
}
};
and this is my output image:
How can I solve this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
试试这个方法:
Try this way:
代码完全按照您的要求进行操作 - 对于
Cursor
中的每个元素,您都会遍历所有列表并设置每个元素的文本。我认为“Ameer Zhann”是列表中的最后一个结果,因此TextView
中仅保留此文本。为
Cursor
的每个元素调用方法setViewValue(...)
。因此,您不需要任何循环,只需用光标值tv.setText(Cursor.getString(...)); 填充文本即可。
这段代码还有一些奇怪的地方:
作为参数的
view
- 已经是 ID 为R.id.textView1
的视图 - 所以只需删除findViewById< 的调用即可/代码>。
Code do exactly what you ask - for every element in
Cursor
you go through all list and set text of each element. I think that "Ameer Zhann" is last result in your list, so only this text left inTextView
.Method
setViewValue(...)
called for every element ofCursor
. So, you don't need any cycle, just fill text with cursor valuetv.setText(Cursor.getString(...));
.Also there is something strange with this code:
view
that comes as param - is already view with idR.id.textView1
- so just remove call offindViewById
.尝试使用 else 部分
,最后返回 true 而不是 false
try with the else part
and at the end return true instead of false