自定义列表视图(大型数据集)中背景颜色的奇怪行为

时间:2014-05-31 11:12:21

标签: android listview custom-adapter android-background

自定义列表适配器视图的代码(此列表只有11个项目),并且视图持有者在这里没有帮助。

@Override 
public View getView(int position, View convertView, ViewGroup parent){
    LayoutInflater inflater  = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    if( convertView == null ){ // for fast view google io http://www.youtube.com/watch?v=wDBM6wVEO70
    convertView = inflater.inflate(R.layout.single_transaction,parent,false);
    }
    TextView phone_number = (TextView) convertView.findViewById(R.id.phone_number_show);
    TextView transaction_summary = (TextView) convertView.findViewById(R.id.transaction_summary_show);
    TextView transaction = (TextView) convertView.findViewById(R.id.transaction_show);

    Transactions single_transaction = (Transactions)  getItem(position);

    phone_number.setText(String.valueOf(single_transaction.get_phone_number()));
    transaction_summary.setText(single_transaction.get_transaction_summary());

    int single_transaction_value = single_transaction.get_transaction();

    if(single_transaction_value < 0) {

        transaction.setBackgroundColor(Color.parseColor("#098AAA"));
    }

    transaction.setText(String.valueOf(single_transaction_value));

    return convertView;

}

此处如果condition改变xml中定义的textview的默认颜色(skyblue)
所以如果single_transaction_value&lt; 0视图的textview更改为#098AAA(浅绿色)
颜色没有像预期的那样改变。

请注意顶栏的颜色是否正确。 电话号码的灰色。 在白色背景的文本。 天蓝色或浅绿色的交易取决于条件。 奇怪的行为是颜色从xml中定义的默认天蓝色变为代码中定义的lightgreen。

现在这里有一点变化,如果条件,添加了其他

if(single_transaction_value < 0) {

        transaction.setBackgroundColor(Color.parseColor("#098AAA"));
    }
else {
        transaction.setBackgroundColor(Color.parseColor("#76BB51"));
    }

现在颜色正在按预期变化。

这是怎么回事。

0 个答案:

没有答案