很抱歉再次询问simmilar问题。答案对我来说很复杂,因为我在3周前开始使用android,而且我不知道为什么我无法回复和过去的代码。
我有一个包含3列的列表视图(timeschedule)。首先是公交车离开车站的时间,第二个是公交线路的描述,第三个是公交车离开车站的时间和系统时间之间的差异。
所以我想改变传递的物品(公交线路)的颜色。我知道listview有一个方法setBackgroundColor,但它只适用于所有项目。
这是我的代码:
mylist = new ArrayList<HashMap<String, String>>();
mylistglava = new ArrayList<HashMap<String, String>>();
/********** Display the headings ************/
map1 = new HashMap<String, String>();
map1.put("Polazak", "Polazak:");
map1.put("Opis", "Napomena:");
map1.put("Kreceza", "Krece za:");
mylistglava.add(map1);
try {
adapterglava = new SimpleAdapter(this, mylistglava,
R.layout.vrijemebus, new String[] { "Polazak", "Opis",
"Kreceza" }, new int[] { R.id.Polazak, R.id.Opis,
R.id.Kreceza });
list_glava.setAdapter(adapterglava);
} catch (Exception e) {
e.printStackTrace();
}
/********************************************************/
/********** Display the contents ************/
for (int i = 0; i < bus.vrijeme.length; i++) {
map2 = new HashMap<String, String>();
map2.put("Polazak", bus.vrijeme[i]);
map2.put("Krece za", kreceza[i]);
if (i < bus.opis.length)
map2.put("Opis", bus.opis[i]);
else
map2.put("Opis", " ");
mylist.add(map2);
}
try {
adapter = new SimpleAdapter(this, mylist, R.layout.vrijemebus,
new String[] { "Polazak", "Opis", "Krece za" }, new int[] {
R.id.Polazak, R.id.Opis, R.id.Kreceza });
list.setAdapter(adapter);
} catch (Exception e) {
e.printStackTrace();
}
}
所以任何人都可以实现Adapter getview()并描述如何在我之前的代码上设置它。也许我会得到它。 再次感谢, Matija
答案 0 :(得分:0)
您应该使用GridView代替ListView
。在这种情况下,您将能够自定义您想要的任何项目。
答案 1 :(得分:0)
覆盖适配器的getView
adapter = new SimpleAdapter(this, mylist, R.layout.vrijemebus,
new String[] { "Polazak", "Opis", "Krece za" }, new int[] {
R.id.Polazak, R.id.Opis, R.id.Kreceza })
{
@Override
public View getView (int position, View convertView, ViewGroup parent)
{
View v = super.getView(position, convertView, parent);
TextView tv = (TextView) v.findViewById(R.id.Polazak);
// based on condition. set color to the required textview
String value = tv.getText().toString();
if(value.equals("passed"))
{
tv.setTextColor(Color.RED);
}else
{
tv.setTextColor(Color.BLACK);
}
return v;
}
};