gpt4 book ai didi

android - 微调项目的背景颜色随机变化

转载 作者:行者123 更新时间:2023-11-30 00:09:31 24 4
gpt4 key购买 nike

我有一个微调器,其中包含从数据库查询中填充的项目列表。我正在根据在本地 sqlite 数据库中找到的数据更改微调项的背景颜色。一切正常,除了当我在微调器中滚动列表时,其他不应更改其背景颜色的项目也会更改其背景颜色。

我很清楚 android listview 中的回收问题,我已经实现了 holder 模式来解决它,但我在解决微调列表中的问题时遇到了困难。

这是我的代码:

ArrayAdapter<Category> categoryAdapter = new ArrayAdapter<Category>(getActivity(),
android.R.layout.simple_dropdown_item_1line, categoryList){
@Override
public View getDropDownView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
View row = super.getDropDownView(position, convertView, parent);

Category category = (Category) getItem(position);
Cursor crsCheckCatAva = database.rawQuery("SELECT distinct category_id FROM "+ ItemsTable.TABLE_OUTLET_DATA +" WHERE "+ ItemsTable.COLUMN_OUTLET_DATA_OUTLET_ID +"='"+ Info.getInstance().getOutletID() +"'", null);
if(crsCheckCatAva.getCount() > 0){
while (crsCheckCatAva.moveToNext()){
if(category.getCategory_id() == 0){
row.setBackgroundColor(Color.WHITE);
}else
if(crsCheckCatAva.getInt(crsCheckCatAva.getColumnIndex("category_id")) == category.getCategory_id()){
row.setBackgroundColor(Color.GRAY);
}
}
}
crsCheckCatAva.close();
return row;
}
};
categorySelectionSpinner.setAdapter(categoryAdapter);

最佳答案

我找到了解决方案,这就是我所做的:

无论条件如何,我每次都返回 convertView。我所做的是仅当 db id 与 id 匹配时才返回 convertView,否则我将 convertview 返回为 null。这是我的代码:

ArrayAdapter<Category> categoryAdapter = new ArrayAdapter<Category>(getActivity(),
android.R.layout.simple_dropdown_item_1line, categoryList){
@Override
public View getDropDownView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
View row = super.getDropDownView(position, null, parent);

Category category = (Category) getItem(position);
Cursor crsCheckCatAva = database.rawQuery("SELECT distinct category_id FROM "+ ItemsTable.TABLE_OUTLET_DATA +" WHERE "+ ItemsTable.COLUMN_OUTLET_DATA_OUTLET_ID +"='"+ Info.getInstance().getOutletID() +"'", null);
if(crsCheckCatAva.getCount() > 0){
while (crsCheckCatAva.moveToNext()){
/*if(category.getCategory_id() == 0){
row.setBackgroundColor(Color.WHITE);
}else*/
if(crsCheckCatAva.getInt(crsCheckCatAva.getColumnIndex("category_id")) == category.getCategory_id()){
row = super.getDropDownView(position, convertView, parent);
row.setBackgroundColor(Color.GRAY);
}
}
}else {
row = super.getDropDownView(position, null, parent);
}
crsCheckCatAva.close();
return row;
}
};
categorySelectionSpinner.setAdapter(categoryAdapter);

关于android - 微调项目的背景颜色随机变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48376324/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com