簡體   English   中英

當屏幕打開時,帶有 RecyclerView 的屏幕滾動到底部

[英]Screen with RecyclerView scrolled to bottom when screen is opened

我有一個帶有RecyclerViewFragment 當屏幕加載時,它會自動滾動到RecyclerView的末尾。 如何禁用此功能?

代碼:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    View rootView = inflater.inflate(R.layout.fragment_sleep_month, container, false);
    tfSegoeui = Typeface.createFromAsset(getResources().getAssets(), "fonts/segoeui.ttf");
    tfSegoeuiBold = Typeface.createFromAsset(getResources().getAssets(), "fonts/SEGOEUIB.TTF");

    fabAdd = (FloatingActionButton) rootView.findViewById(R.id.fab);
    fabAdd.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent i = new Intent(getActivity(), AddSleepActivity.class);
            getActivity().startActivityForResult(i, REQUEST_CODE);
        }
    });
    recyclerCategoryList = new ArrayList<>();

    recyclerView = (RecyclerView)rootView.findViewById(R.id.recycler_view);
    mAdapter =  new RecyclerSleepAdapter(recyclerCategoryList);
    RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getActivity().getApplicationContext());
    recyclerView.setLayoutManager(mLayoutManager);
    recyclerView.setItemAnimator(new DefaultItemAnimator());
    recyclerView.setAdapter(mAdapter);

    prepareListData();
}

private void prepareListData() {

    //recyclerCategoryList = new ArrayList<>();

    SleepDataModel listData = new SleepDataModel("Fri,Jan 7 11.28PM - 7.00AM",75,"7 Hrs 32 Mins");
    recyclerCategoryList.add(listData);

    listData = new SleepDataModel("Thu,Jan 6 11.00PM - 5.45AM",30,"6 Hrs 45 Mins");
    recyclerCategoryList.add(listData);

    listData = new SleepDataModel("Wed,Jan 5 10.50PM - 7.00AM", 60,"8 Hrs 10 Mins");
    recyclerCategoryList.add(listData);

    listData = new SleepDataModel("Tue,Jan 4 10.00PM - 5.00AM",50, "5 Hrs 30 Mins" );
    recyclerCategoryList.add(listData);

    listData = new SleepDataModel("Mon,Jan 3 9.50PM - 6.00AM",50, "7 Hrs 15 Mins" );
    recyclerCategoryList.add(listData);

    mAdapter.notifyDataSetChanged();
}

這是因為您在設置 adaper 后填充了數據列表,並且 recyclerview 正在顯示最后添加的行。 嘗試在mAdapter = new RecyclerSleepAdapter(recyclerCategoryList);之前調用prepareListData() mAdapter = new RecyclerSleepAdapter(recyclerCategoryList);

當然,從 prepareListData(): mAdaper.notifyDataSetChanged刪除這一行,因為此時您的適配器為空

嘗試添加recyclerView.smoothScrollToPosition(0); 在調用notifyDataSetChanged()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM