RecyclerView 和 Adapter,哪个应该处理 Data Change?

RecyclerView and Adapter, which one should take care of Data Change?

RecyclerViewFragmentClass中有MovieData,AdapterClass存储MovieData.getMovieList( ).

我的问题是,当事件处理程序被触发时,

  1. 直接在RecyclerViewFragment中添加/删除数据Class
  2. 在 Adapter Class 中定义 add( ) / delete( ) 函数并在 RecyclerViewFragment Class
  3. 中调用 adapter.add( ) / adapter.delete( )

哪种方式设计更好?谁负责处理数据更改?

如果适配器初始化后发生数据更改,则应在适配器内部处理。适配器还有一个漂亮的功能 notifyDataSetChanged(),它会在数据更改时更新适配器内的项目位置。

我建议让 RecyclerViewFragment 包含数据。并创建一个将引用传递给数据的适配器。例如:

mAdapter = new CustomAdapter(mMovieData.getMovieList());

然后在 RecyclerViewFragment 中执行所需的操作,例如添加/删除,例如:

mMovieData.getMovieList().add(index);

认为这是最常用的方法。您不想在适配器和 RecyclerViewFragment 中复制 getMovieList 数据两次。这会让人感到困惑。

recyclerview 与数据无关,这全部由您创建的用于呈现数据的适配器处理。查看函数 here,了解您在数据更改方面有哪些选择。

适配器负责 class 用数据填充列表,例如,如果您有一个需要用数据填充的列表,让我们说 SCORES 那么适配器负责填充这些分数名单。另一方面,RecyclerView 是为了让适配器以更快的速度和效率填充它,recyclerView 使用适配器以前用于显示数据的视图并将它们放在缓存中以供以后重用以显示相同类型的对象,以便它不必每次适配器要在列表中填充项目时都初始化一个新对象,这使得它更快。

and here is a link that might help you as well :

希望我的回答对您有所帮助。