我有一个将自定义类放入列表视图的 ListView 适配器。自定义类很简单,它是一个 NameValue,只有两个字符串(一个用于名称,另一个用于值)。如果名称是 Key,我想对行使用一种 XML 布局;如果是其他内容,请使用另一个 XML 布局。这是我的适配器的代码:
private class ApInfoAdapter extends ArrayAdapter<NameValue> {
private ArrayList<NameValue> adapterPairs;
public ApInfoAdapter(Context context, int textViewResourceId,
ArrayList<NameValue> pairs) {
super(context, textViewResourceId, pairs);
this.adapterPairs = pairs;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
adapterPair = adapterPairs.get(position);
if (v == null) {
LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (adapterPair.name.equals("Key")) {
v = vi.inflate(R.layout.info_row_key, null); // This makes the key red
} else {
v = vi.inflate(R.layout.info_row, null); // All others have use the default foreground color
}
}
if (adapterPair != null) {
TextView name = (TextView) v.findViewById(R.id.name);
TextView value = (TextView) v.findViewById(R.id.value);
name.setText(adapterPair.name);
value.setText(adapterPair.value);
}
return v;
}
}
问题是,有时它使名称为“Key”的行变为红色,但有时它使其他行变为红色(有时是一行,有时是多行)。当颜色关闭时,我注意到当我上下滚动 ListView 时,其他行的颜色也会不正确。我还注意到我的三星 Galaxy S2 上的问题比我的 Nexus 7 Razor 上的问题更严重。我对专家的问题是:我做错了什么,我该如何解决?感谢您的见解。