我有一段代码可以添加/更新驻留在回收站视图中的卡片视图的内容。
然而,即使我已经打电话,它也不会更新内容 viewAdapter.notifyItemChanged(位置); 和 viewAdapter.notifyItemChanged(位置);
我试过在runOnUiThread方法中调用它,但它仍然没有更新。我尝试单步进入onBindViewHolder()并在内部更新值,但屏幕上的显示不会更新。
知道为什么吗? 我的一些代码如下:
rvTransactionItems = (RecyclerView) mView.findViewById(R.id.rvTransactionItems);
rvTransactionItems.setHasFixedSize(true);
LinearLayoutManager llm = new LinearLayoutManager(getParentActivity());
rvTransactionItems.setLayoutManager(llm);
detailAdapter = new DetailAdapter();
rvTransactionItems.setAdapter(detailAdapter);
@Override
public void onBindViewHolder(DetailViewHolder viewHolder, int i) {
StockCount count = addedItemCount.get(i);
Integer expectedQty = count.getExpectedQuantity();
Integer quantity = count.getQuantity();
viewHolder.tvArticleNumber.setText(articleNumber);
viewHolder.tvStockCode.setText(stockCode);
String countStr = quantity + " / " + expectedQty;
viewHolder.tvCount.setText(countStr);
}
答案 0 :(得分:1)
我想出了如何解决我的问题。问题根是我的函数调用处理程序(受保护的Handler updateUiHandler = new Handler(Looper.getMainLooper());)必须通知适配器是在另一个线程中。所以基本上我试图在另一个线程的主线程上运行一些东西。所以我必须通过调用层次结构来调用runOnUiThread方法。这将解决问题。
总而言之,notifyChange方法必须在主线程上运行才能使更改生效!