notifyItemChanged(position)没有更新视图

时间:2018-07-24 16:07:37

标签: android user-interface android-recyclerview android-arrayadapter recycler-adapter

我在做什么:

RecyclerView->调用onRecyclerView项上的新片段单击(通过界面)->更新新片段中的内容->关闭当前片段->尝试更新选定的项数据。 (调用notifiyItemChanged(position))

但是数据没有在UI端更新,我检查了ArrayList是否正在更新(通过调试器)。

原因:notifiyItemChanged(position)没有调用onBindViewHolder()

代码:

RecyclerView使用率:

mLayoutGridManager = new GridLayoutManager(getActivity(), 4);
     mTableAdapter = new TableAdapter(getActivity(),    RoomFragment.this);
    mTableRecyclerView.setAdapter(mTableAdapter);
    mTableRecyclerView.setHasFixedSize(false);
    mTableRecyclerView.setLayoutManager(mLayoutGridManager);

通话片段:

tableOrderDetails = TableOrderDetailsFragment.newInstance(table,position);
        FragmentManager fm = getSupportFragmentManager();
        FragmentTransaction transaction = fm.beginTransaction();

        transaction.setCustomAnimations(R.anim.enter_from_right, R.anim.exit_to_left, R.anim.enter_from_right, R.anim.exit_to_left);
        transaction.add(R.id.fragment_container, tableOrderDetails);
        transaction.addToBackStack(CustomerListFragment.TAG);
        transaction.commitAllowingStateLoss();

//更新视图

public void updateTable(int tableID, String tableStatus, int position){

             if (data.get(position).getTableID()==tableID && tableStatus!=null){
                data.get(position).setCurrentTableStatus(tableStatus);

                 notifyItemChanged(position);
             }
      }

#可能的原因: 视图未附加。

尝试过的解决方案:

  1. notifyDataSetChanged()

  2. runOnUiThred

  3. 使用Looper的呼叫更新功能。

0 个答案:

没有答案