Android 使用ViewPager时如何在片段中获取小部件元素
我有一个用于读取数据内容的Android 使用ViewPager时如何在片段中获取小部件元素,android,android-viewpager,android-recyclerview,Android,Android Viewpager,Android Recyclerview,我有一个用于读取数据内容的ViewPager。我在上一次使用中为项目位置和数据滚动添加书签。当我打开MainActivity时,我将ViewPager设置为我使用的最后一个位置项。但我不知道如何为上次使用时滚动的RecyclerView设置crolly。 如何从main活动获取ReadingDataFragment中的RecyclerView? 在MainActivity(我扩展了AppCompatActivity)中: 在读取数据片段中(我扩展了片段): 在调用片段的onCreateView之
ViewPager
。我在上一次使用中为项目位置和数据滚动添加书签。当我打开MainActivity
时,我将ViewPager
设置为我使用的最后一个位置项。但我不知道如何为上次使用时滚动的RecyclerView
设置crolly。
如何从main活动
获取ReadingDataFragment
中的RecyclerView
?
在MainActivity
(我扩展了AppCompatActivity)中:
在读取数据片段中(我扩展了片段):
在调用片段的
onCreateView
之前,您将无法获取recyclerview
的实例。在片段
中,您可能希望首先知道它是查看页面
中的当前项,可能正在使用在设置查看页面
的当前项时从主活动调用的自定义方法。如果找到true,那么在片段本身内部,您可能需要设置recyclerview的最后一个滚动位置。
...
@Override
protected void onCreate(Bundle arg0) {
super.onCreate(arg0);
setContentView(R.layout.layout_main_activity);
List<Data> list = new ArrayList<Data>();
list = ...;
ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
CustomDataAdapter adapter = new CustomDataAdapter(getSupportFragmentManager(), list, getApplicationContext());
viewPager.setAdapter(adapter);
//check bookmark data
int positionBookmark = getPositionBookmark();
viewPager.setCurrentItem(positionBookmark);
//check scroll bookmark
int scrollYBookmark = getScrollYBookmark();
//Here, How to get RecyclerView in ReadingDataFragment and set position.
}
...
...
private List<Data> list;
private Context context;
public CustomDataAdapter(FragmentManager fm, List<Data> list, Context context) {
super(fm);
this.list = list;
this.context = context;
}
@Override
public Fragment getItem(int position) {
return new ReadingDataFragment(context, list.get(position));
}
@Override
public void setPrimaryItem(ViewGroup container, int position, Object object) {
}
@Override
public int getCount() {
return list.size();
}
...
...
private Data data;
private Context context;
public ReadingDataFragment(Context context, Data data) {
this.data = data;
this.context = context;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.layout_item_view_data, container, false);
RecyclerView rv = (RecyclerView) view.findViewById(R.id.rv_item);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context);
rv.setLayoutManager(linearLayoutManager);
ReadingDataAdapter adapter = ....
rv.setAdapter(adapter);
}
...