RecyclerView和Adapter,哪个应该处理数据更改?

时间:2016-06-16 13:14:34

标签: android android-recyclerview adapter

在RecyclerViewFragment Class中,有MovieData,Adapter Class存储MovieData.getMovieList()。

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

  1. 直接在RecyclerViewFragment Class
  2. 中添加/删除数据
  3. 在Adapter Class中定义add()/ delete()函数并在RecyclerViewFragment Class中调用adapter.add()/ adapter.delete()
  4. 哪种方式更好的设计?谁有责任处理数据变更?

4 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

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

mMovieData.getMovieList().add(index);

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

答案 2 :(得分:0)

recyclerview不关心数据,这全部由您创建的用于显示数据的适配器处理。查看函数here,了解有关数据更改的选项。

答案 3 :(得分:0)

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

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

希望我的回答对你有帮助。