代码之家  ›  专栏  ›  技术社区  ›  Philipp Schumann

Android刷新Recyclerview延迟

  •  2
  • Philipp Schumann  · 技术社区  · 10 年前

    我有一个简单的布局和一个回收站。 在onCreateView方法中,我设置了Recyclerview:

      @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_overview, container, false);
        recyclerView = (RecyclerView) rootView.findViewById(R.id.rv_overview);
        list = new ArrayList<>();
        LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
        layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        recyclerView.setLayoutManager(layoutManager);
    
        list = getOverviewList(getActivity());
        adapter = new OverviewRecyclerAdapter(getActivity(), list);
        recyclerView.setAdapter(adapter);
        final Context context = getActivity();
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                list =getOverviewList(context);
                adapter.notifyDataSetChanged();
            }
        }, 1000);
        return rootView;
    }
    

    正如您所看到的,Recyclerview需要在创建视图后一秒钟刷新。我试图用处理器实现这一点。但是处理程序中的代码不会刷新Recyclerview。但显然应该这样。

    2 回复  |  直到 10 年前
        1
  •  2
  •   orium    10 年前

    但显然应该这样。

    不应该,因为您没有为适配器设置新数据

    list=getOverviewList(上下文);

    您只需设置为变量新列表,但它不会更改适配器中的旧列表

    编辑:

    试试这样的

    list.clear();
    list.addAll(getOverviewList(context));
    
        2
  •  0
  •   rahul.taicho    10 年前

    如果你确定你正在修改第二次调用getOverViewList(Context ctx)时得到的列表,那么代码看起来应该很好,否则很难说它是否刷新了,因为它再次加载了相同的数据