Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.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
Java 如何保存RecyclerView';什么是滚动位置?当应用程序关闭时_Java_Android_Firebase_Android Recyclerview - Fatal编程技术网

Java 如何保存RecyclerView';什么是滚动位置?当应用程序关闭时

Java 如何保存RecyclerView';什么是滚动位置?当应用程序关闭时,java,android,firebase,android-recyclerview,Java,Android,Firebase,Android Recyclerview,如何在应用程序关闭后保存我在RecyclerView适配器中的最后位置,并在返回应用程序后恢复它 RecyclerList.add(m); messageAdapter = new MessageAdapter(context, RecyclerList, leftUser, rightUser, this); recyclerView.setAdapter(messageAdapter); } public void LoadData()

如何在应用程序关闭后保存我在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 {
              //  
RecyclerList.add(m);
messageAdapter=newmessageadapter(上下文、回收列表、leftUser、righuser、this);
recyclerView.setAdapter(messageAdapter);
}
公共void LoadData(){
if(isNetworkAvailable()){
如果(i
根据我的理解,您希望在您的RecyclerView中存储项目的最后位置可见,因此当再次返回应用程序时,请滚动至关闭应用程序/活动之前的最后位置

首先,你可以像这样从RecyclerView的LayoutManger那里得到最后一个职位

//define LinearLayoutManager object as global because we want to use in another method 
linearLayoutManager=new LinearLayoutManager(this);
recyclerView.setLayoutManager(linearLayoutManager);
现在我们想要得到最后一个位置,并在活动关闭或使用生命周期活动返回后台时存储它

如果您想了解更多有关活动生命周期的信息,请访问

因此,在活动中的暂停中,使用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();

    }
知道每次活动转到后台或应用程序关闭时,我们存储最后位置

在获取数据并设置适配器之后,通过add检索最后一个位置并调用此方法

private int getLastItemPosition(){

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

        return preferences.getInt("lastPos",0);
    }

请发布一些有关您的问题以及您迄今为止尝试的内容的信息。您在获取滚动位置、保存滚动位置、加载滚动位置或设置滚动位置时是否遇到困难?请使用SharedPreference在OnBindView()中存储最后一个项目的位置方法,并在应用程序打开时返回它page@Campbell:我的问题是我有一个recyclerview,但当我返回或关闭应用程序时,所有内容都会重新开始:(我想保留它们,即使在我关闭应用程序时,对不起,我的english@MahmoudAbuElheja你能帮我解决这个问题吗