我有一段代码可以添加/更新驻留在回收站 View 中的卡片 View 的内容。
但是,即使我已经调用它也不会更新内容
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);
}
最佳答案
我想出了解决问题的方法。问题的根源是我调用必须通知适配器的处理程序(protected Handler updateUiHandler = new Handler(Looper.getMainLooper());)的函数在另一个线程中。所以基本上我试图在另一个线程的主线程上运行一些东西。所以我必须向上调用层次结构来调用方法 runOnUiThread。这将解决问题。
所以总而言之,notifyChange 方法必须在主线程上运行才能使更改生效!
关于adapter - Android RecyclerView 不会更新内容更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30369913/