Android RecyclerView无法更新内容更改

时间:2015-05-21 09:35:10

标签: adapter android-recyclerview

我有一段代码可以添加/更新驻留在回收站视图中的卡片视图的内容。

然而,即使我已经打电话,它也不会更新内容     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);

        }

1 个答案:

答案 0 :(得分:1)

我想出了如何解决我的问题。问题根是我的函数调用处理程序(受保护的Handler updateUiHandler = new Handler(Looper.getMainLooper());)必须通知适配器是在另一个线程中。所以基本上我试图在另一个线程的主线程上运行一些东西。所以我必须通过调用层次结构来调用runOnUiThread方法。这将解决问题。

总而言之,notifyChange方法必须在主线程上运行才能使更改生效!