所以我有一个使用自定义适配器的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;
}
答案 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);
}
}