【发布时间】:2021-11-21 21:26:18
【问题描述】:
我有一个问题,我想设置高亮 Gridview 项目
当 SQLITE 的值状态等于 0 时。我有下面的查询
但我不知道从哪里开始以及如何突出显示 GridView 上的特定项目。
输出应该是这样的,突出显示的项目基于 SQLITE 上的状态,其值为0。有人知道我怎样才能实现突出显示的部分吗?对我很有用
InventoryListClass
GridView gridView = (GridView) findViewById(R.id.gridView);
list = new ArrayList<>();
adapter = new InventoryListAdapter(this, R.layout.activity_inventory_items, list);
gridView.setAdapter(adapter);
try {
Cursor cursor = sqLiteHelper.getData("SELECT id,hh_number,card_scanning_status FROM CgList");
list.clear();
while (cursor.moveToNext()) {
int id = cursor.getInt(0);
String hhNumber = cursor.getString(1);
int status = cursor.getInt(2);
if (status==0){
//IF VALUE IS O IT IS HIGHLIGHTED
}
else {
// IF VALUE IS 1 NOT HIGHLIGHTED
}
list.add(new Inventory(hhNumber, id));
}
adapter.notifyDataSetChanged();
}
catch (Exception e){
Log.d(TAG, "Error: "+ e);
}
InventoryListadapter 类 更新:我认为不是在 InventoryList 类下设置颜色,我认为突出显示应该在 getView 内部我尝试的是下面的代码
但它似乎是错误的
Attempt to invoke virtual method 'void android.view.View.setBackgroundColor(int)' on a null object reference
@Override
public View getView(int position, View view, ViewGroup viewGroup) {
View row = view;
ViewHolder holder = new ViewHolder();
if(row == null){
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(layout, null);
holder.txtName = (TextView) row.findViewById(R.id.txtName);
row.setTag(holder);
}
else {
holder = (ViewHolder) row.getTag();
}
Inventory inventory = inventoryList.get(position);
holder.txtPrice.setText("HH no: "+ inventory.getHHnumber());
int status = inventory.getStatus();
if (status==0){
view.setBackgroundColor(Color.parseColor("#FF108714"));
//here to set color
}
return row;
}
【问题讨论】:
标签: java android android-adapter android-gridview