我已经看到了相关的答案,我不知道哪一个适合我。 我有一个listView,每行都有一个textview。我想给出一些条件,每行得到不同的颜色。(想象一下,我从DB获取数据,并给出我得到的值,我希望文本设置为不同的颜色)我的代码如下所示:
public class TrailsConditionScreen extends ListActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
seeTrails();
}
private void seeTrails() {
String[] help=new String[] {"foo","bar"};
ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,R.layout.row,R.id.text1,help);
setListAdapter(adapter);
}
} 到目前为止,这段代码只是将它们打印在列表中。
现在我想从db中检索值时,给定值,我会在每一行上设置不同的颜色。想象我的代码在读取第一行时从我想要的表中检索数据,给定数字在listview的第一行设置适当的颜色。然后转到第二个单独的数据库,为列表的第二行设置颜色,依此类推..我已经成功实现了数据库中的读数,但我不知道如何在特定行上设置颜色。在伪代码中它看起来像这样。
for i=0 to number of lines in db{
read_data();
if key_value=0 then color_of_line(i)=red;
else color_of_line_i)=green;
}
对此有何帮助?
答案 0 :(得分:7)
您必须创建自定义适配器来处理此问题,而不是使用ArrayAdapter。扩展ArrayAdapter并覆盖 getView 方法。在基于条件的 getView 方法内,您可以更改 textView.setTextColor 上文本的颜色。
要编写自定义适配器,请在此处检查tutorial(6.教程:实现您自己的适配器)。此示例不使用持有者模式,但您应该使用。
答案 1 :(得分:2)
最好的办法是扩展ArrayAdapter并创建自己的类。
在getView()
方法中,执行条件并设置要绘制的颜色。有很多关于创建自己的适配器的好教程。例如,检查http://www.ezzylearning.com/tutorial.aspx?tid=1763429&q=customizing-android-listview-items-with-custom-arrayadapter。
希望它有所帮助!
答案 2 :(得分:2)
为了实现这一目标,您需要使用自定义适配器。既然你提到过,你从数据库中获取数据,我假设你在游标适配器中有信息。因此,一个好的起点是扩展游标适配器。
在新的自定义适配器中,您应该覆盖getView()方法。在那里指定用于列表视图中的每个项目的视图。此外,您还可以在那里设置视图的属性。
根据您的业务逻辑,您应该在getView中设置文本颜色。
答案 3 :(得分:0)
我要做的是为列表视图创建一个CustomAdapter
public class MyCustomAdapter extends BaseAdapter
并在函数中
public View getView(int position, View convertView, ViewGroup parent)
你有这个职位,你可以改变你想要的任何东西。
如果您通过自定义适配器列表视图搜索谷歌,您将获得一些示例
答案 4 :(得分:-1)
不同颜色对于不同的列表项,是的,只有当项目只是静态时才能实现,但对于动态内容,这很难做到......