当前位置: 首页 > 知识库问答 >
问题:

notifyItemInserted或notifyItemRemoved中的RecycleView或更新

楚冷勋
2023-03-14

我正在通过以下方式向RecyclerView插入值

public class UserListFragment extends Fragment implements UserEvents {


    private View rootView;
    private Activity mActivity;
    private RecyclerView recyclerView;
    ArrayList<User> mUserList;

    RoomOrUserRecyclerViewAdapter adapter;


    public static Fragment newInstance() {
        UserListFragment f = new UserListFragment();
        return f;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        rootView = inflater.inflate(R.layout.user_list_fragment, container, false);   
        findViews(rootView);
        return rootView;
    }

    private void findViews(View view) {

        recyclerView = (RecyclerView) view.findViewById(R.id.recycler_view);
        mUserList = ((SocketApplication) mActivity.getApplication()).getUserListExcludeMineId();

        if (mUserList != null && mUserList.size() > 0) {

            adapter = new RoomOrUserRecyclerViewAdapter(getActivity(), mUserList, null);
            recyclerView.setAdapter(adapter);
        }

        ((SocketApplication) mActivity.getApplication()).setmUserEventsInterface(this);

    }


    @Override
    public void onAttach(Activity activity) {
        mActivity = activity;
        super.onAttach(activity);
    }

    @Override
    public void onUserLeft(int position) {
        if (position != -1) {
            adapter.notifyItemRemoved(position);
            adapter.notifyItemRangeChanged(position, mUserList.size());
        }
    }

    @Override
    public void onUserJoin(final User user) {
        mUserList.add(user);
        adapter.notifyItemInserted(mUserList.size() - 1);
    }
}

但该项目未插入或我在UI中未显示任何更新

有谁能帮我解决这个问题吗

当插入或删除任何新用户时,将执行此UserEvents接口的方法

 @Override
        public void onUserLeft(int position) {
            if (position != -1) {
                adapter.notifyItemRemoved(position);
                adapter.notifyItemRangeChanged(position, mUserList.size());
            }
        }

        @Override
        public void onUserJoin(final User user) {
            mUserList.add(user);
            adapter.notifyItemInserted(mUserList.size() - 1);
        }
    }

但不知道为什么回收器不更新

共有1个答案

慎风畔
2023-03-14

你能试试这个代码吗?我尝试这个代码我的项目和工作。

@Override
        public void onUserLeft(final int position) {
            if (position != -1) {
                        mUserList.remove(position);
                        adapter.notifyItemRangeChanged(position,1);
            }
        }

        @Override
        public void onUserJoin(final User user) {
                    mUserList.add(user);
                    adapter.notifyItemRangeChanged(mUserList.size()-1,1);
        }
 类似资料:
  • 我正在创建一个使用RecyclerView显示的卡片列表,其中每个卡片都有一个按钮,可以从列表中删除该卡片。 是否有人有使用notifyItemRemoved()的经验,并且知道它的行为与NotifyDataSetChanged不同的原因? 下面是我正在使用的一些代码:

  • 带有我的适配器的代码段是:

  • ListView或者RecycleView滚动时隐藏Toolbar( Part 2 ) 原文链接 : How to hide/show Toolbar when list is scrolling (part 2)/) 译文出自 : 开发技术前线 www.devtf.cn 译者 : chaossss 校对者: 这里校对者的github用户名 状态 : 校对中 Hello,各位小伙伴,俺胡汉三又来了

  • ListView或者RecycleView滚动时隐藏Toolbar (1) 原文链接 : How to hide/show Toolbar when list is scroling (part 1) 译文出自 : 开发技术前线 www.devtf.cn 译者 : chaossss 校对者: 这里校对者的github用户名 状态 : 校对中 今天我打算写一篇博文给大家介绍Google+ App的一

  • 我正在将适配器移植到中 我想实现的:当用户向下滚动到我想要开始取数据的末尾附近时,我还想在末尾添加i ProgressBar视图,让用户知道更多的数据即将到来。 我在BaseAdapter中实现这一点的方式是:在上,在接近结尾时请求的视图中,我将开始获取更多数据,调用notifyDataSetChanged(以获得要显示的ProgressBar视图),然后才返回所需的视图。 我在RecyclerV

  • 问题内容: 我有这个表达: 这些元素的(,,)有优先权? 您能用方括号显示操作顺序吗? 问题答案: 首先,然后,然后。 您的表情将被评估为。 https://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html