我在做什么:
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);
}
}
#可能的原因: 视图未附加。
尝试过的解决方案:
notifyDataSetChanged()
runOnUiThred
使用Looper的呼叫更新功能。