gpt4 book ai didi

java - 当您滚动项目时,Android ListView 适配器会改变颜色

转载 作者:行者123 更新时间:2023-12-02 11:08:41 25 4
gpt4 key购买 nike

好的,我们有一些领域结果返回我们已经下的一组股票订单。根据库存订单是否完全 checkin ,我们使用适配器中的 if 语句将行项目的背景颜色显示为绿色或蓝色。

问题是加载时订单正确显示为绿色/蓝色。但当你向下滚动时,蓝色的会变成绿色。 (参见图片)。我们认为数据可能在某个地方发生了变化,但不确定为什么会发生这种情况,因为我们只是在页面上滚动。

Before scroll After scroll

创建此代码的代码:

StockOrdersFragment.java

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {

myView = inflater.inflate(R.layout.stock_orders_layout, container, false);
listView = myView.findViewById(R.id.listView);

stockOrdersService = new StockOrdersService(this);

stockOrdersService.fetchFromServer(getActivity());

fetchStockOrders();

return myView;
}

public void fetchStockOrders()
{
stockOrders.clear();

RealmResults<StockOrder> savedStockOrders = stockOrdersService.all();

stockOrders.addAll(savedStockOrders);

StockOrdersAdaptor adaptor = new StockOrdersAdaptor(stockOrders, getActivity());

listView.setAdapter(adaptor);
}

@Override
public void ordersReceived() {
fetchStockOrders();
}

StockOrdersAdaptor.java(执行颜色的位)

lastPosition = position;

if(stockOrder != null){
viewHolder.stockOrderId.setText(String.valueOf(stockOrder.id));
viewHolder.supplierName.setText(stockOrder.supplier.name);

if (stockOrder.allItemsHaveBeenReceived()) {
convertView.setBackgroundResource(R.color.colorGreen);
}
}

// Return the completed view to render on screen
return convertView;

allItemsHaveBeenRecieved()

public Boolean allItemsHaveBeenReceived()
{
for (StockOrderDetails detail: details) {
if (detail.quantity != detail.quantityReceived) {
return false;
}
}
return true;
}

最佳答案

在此处添加 else 语句:

if (stockOrder.allItemsHaveBeenReceived()) {
convertView.setBackgroundResource(R.color.colorGreen);
} else {
convertView.setBackgroundResource(R.color.colorBlue);
}

问题是,当您的元素被回收时,它仍然很脏。确保每次适配器绑定(bind)到列表项布局时都会填充列表项布局中的所有 UI 项。

关于java - 当您滚动项目时,Android ListView 适配器会改变颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50737151/

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