Как сохранить позицию прокрутки RecyclerView? когда приложение закрыто - PullRequest
0 голосов
/ 20 января 2020

как я могу сохранить свою последнюю позицию в адаптере RecyclerView после закрытия приложения и восстановить ее после возврата в приложение

 RecyclerList.add(m);
        messageAdapter = new MessageAdapter(context, RecyclerList, leftUser, rightUser,  this);
        recyclerView.setAdapter(messageAdapter);
    }

    public void LoadData() {
        if (isNetworkAvailable()) {
            if (i < arrSplit.length) {
                recyclerListSize = RecyclerList.size();

                String temp = arrSplit[i];

                Data m = new Data(temp);

                RecyclerList.add(m);

                Objects.requireNonNull(recyclerView.getAdapter()).notifyItemInserted(recyclerListSize);
                recyclerView.smoothScrollToPosition(recyclerListSize);


                i++;
            } else {
              //  

1 Ответ

0 голосов
/ 20 января 2020

В зависимости от того, что, как я понимаю, вы хотите сохранить последнюю позицию элемента видимый в вашем RecyclerView, поэтому при возврате в приложение снова прокрутите до последней позиции перед закрытым приложением / действием

Прежде всего вы можете получить последнюю позицию из LayoutManger из RecyclerView следующим образом:

//define LinearLayoutManager object as global because we want to use in another method 
linearLayoutManager=new LinearLayoutManager(this);
recyclerView.setLayoutManager(linearLayoutManager);

и теперь мы хотим получить последнюю позицию и сохранить ее, если действие закрыто или go на фоне, используя жизненный цикл активности перезвоните

если вы хотите узнать больше о жизненном цикле активности go до это

так внутри onPause в вашей деятельности добавьте последнюю позицию магазина, используя SharedPrefrane

@Override
    protected void onPause() {
        super.onPause();            

        SharedPreferences preferences =getSharedPreferences("Pref",MODE_PRIVATE);

        //get last position Visible Item Position
        int lastPos= linearLayoutManager.findLastCompletelyVisibleItemPosition();

        //store lastPos
        preferences.edit().putInt("lastPos",lastPos).apply();

    }

знайте, что мы сохраняем последнюю позицию каждый раз, когда активность go на фоне или приложение закрывается

и после получения данных и установите Adapter, восстановите последнюю позицию, добавив, и вызовите этот метод

private int getLastItemPosition(){

        SharedPreferences preferences =getSharedPreferences("Pref",MODE_PRIVATE);

        return preferences.getInt("lastPos",0);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...