0

我有一个将自定义类放入列表视图的 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 上的问题更严重。我对专家的问题是:我做错了什么,我该如何解决?感谢您的见解。

4

1 回答 1

1

您应该手动设置背景,而不是任何情况vnullView不仅仅是正确的情况。

于 2013-10-01T05:09:39.917 回答