Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用ViewPager时如何在片段中获取小部件元素_Android_Android Viewpager_Android Recyclerview - Fatal编程技术网

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);
    }
...