我在MVVM框架中使用Android数据绑定。我有一个带有相应PagerAdapter的ViewPager设置。有些页面可能包含视频。我遇到的问题是,PagerAdapter中的InstantiateItem方法始终执行PagerAdapter中的下一个视图,而不是当前视图。例如,说第1页没有视频,但第2页却没有。当用户查看第1页时,第2页中的视频开始播放。这是InstantiateItem方法:
public Object instantiateItem(ViewGroup container, int position) {
LayoutInflater layoutInflater = (LayoutInflater) getApplicationContext().getSystemService(Service.LAYOUT_INFLATER_SERVICE);
ViewDataBinding binding = DataBindingUtil.inflate(layoutInflater, R.layout.main_layout, null, false);
Post post = posts.get(position);
myViewModel = new PostModel(post);
binding.setVariable(BR.model, myViewModel);
container.addView(binding.getRoot());
return binding.getRoot();
}
如何使InstantiateItem执行当前视图而不是下一个视图?问题与setOffscreenPageLimit有关吗?
最佳答案
您不能这样做,因为它是ViewPager
的主要思想-它会预加载接下来的N页以使滑动顺畅。实际上,您也可以对其进行设置,以查看下一个视图的一部分。
我认为您应该使用OnPageChangeListener,并且管理员需要在此处开始/停止播放视频。
顺便说一句,一些建议-您可以使用library来完全不编写该样板代码。 Here my example of usage。
关于java - 具有数据绑定(bind)和InstantiateItem的Android ViewPager/PagerAdapter无法执行 Activity View ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34024802/