ListView上的错误backgroundcolor膨胀

时间:2014-11-19 12:50:25

标签: android listview listadapter

所以我有一个使用自定义适配器的ListView。我希望项目的背景颜色为红色或绿色,具体取决于我使用getDBValue();从我的数据库中获取的值(这可行)。

问题是,当首次打开活动时,列表视图会膨胀,所有列表视图项目都具有相同(不正确)的绿色背景颜色。当我开始滚动时,背景设置正确。

当listview膨胀时,我如何获得正确的背景颜色?我的程序在哪里"错误"?

我已经调试了它,dbValue正在返回正确的值。

这是我的代码:

public View getView(int position, View convertView, ViewGroup parent) {
    return createViewFromResource(position, convertView, parent, mResource);
}

private View createViewFromResource(int position, View convertView,
        ViewGroup parent, int resource) {
    View v;

    if (convertView == null) {
        // first time views are created
        v = mInflater.inflate(resource, parent, false);
    } else {
        v = convertView;
    }

    String dbvalue = getDBValue();

    if(!dbvalue.equals("me")){
            v.setBackgroundColor(Color.argb(230, 255, 0x00, 0x00));
    }else{
            v.setBackgroundColor(Color.argb(230, 0x00, 255, 0x00));
    }

    setViewText((TextView) v, text);

    return v;
}

1 个答案:

答案 0 :(得分:0)

我在我的应用中完成了这件事,

请为此绘制,并在视图中申请, 在这里我分享设置drawable的方法,检查它。

请在createViewFromResource中调用此方法,这样就可以了。

@SuppressLint("NewApi")
@SuppressWarnings("deprecation")
private void setdrwable(Drawable drawable,View view)
{
    if(Build.VERSION.SDK_INT>=16)
    {
        view.setBackground(drawable);
    }
    else
    {
        view.setBackgroundDrawable(drawable);
    }
}