当前位置: 首页 > 知识库问答 >
问题:

当我更新时,Recyclerview位置更改为第一个位置

法和硕
2023-03-14

当我滚动RecyclerView时,我正在使用onLoadMoreListener。当您滚动到底部时,它将更新RecyclerView数据。更新Recyclerview数据后。Recyclerview返回顶部。理想情况下,我希望保留RecyclerView中的职位。我该怎么做呢?

mAdapter.setOnLoadMoreListener(new OnLoadMoreListener() {
            @Override
            public void onLoadMore() {
              new GroupData().execute();
            }
        });


InnerClass

    public static class GroupData extends AsyncTask<Void, Void, Void> {

        @Override
        protected Void doInBackground(Void... voids) {
           try{
             GroupList gm = new GroupList();
             .....
             groupvalues.add(gm);
            } catch (Exception e){
               Log.d("Grouplist ", e.toString());
           }
          return null;
        }
        @Override
        protected void onPostExecute(Void aVoid) {
             super.onPostExecute(aVoid);
             mAdapter = new GroupAdapter(groupvalues,mrecyclerview);
             mrecyclerview.setAdapter(mAdapter);
             progressDialog.dismiss();
             mAdapter.notifyDataSetChanged();
             }
           }
         }

共有3个答案

吴星汉
2023-03-14

只需在onPostExecute中通知您的适配器。无需再次初始化适配器。

    @Override
    protected void onPostExecute(Void aVoid) {
         super.onPostExecute(aVoid);
         progressDialog.dismiss();
         mAdapter.notifyDataSetChanged();
    }

在onCreate中初始化适配器

mAdapter = new GroupAdapter(groupvalues,mrecyclerview);
mrecyclerview.setAdapter(mAdapter);
拓拔稳
2023-03-14

加载时,必须知道新加载项的顶部元素的位置。只要打电话:

recyclerView.scrollToPosition(position);

或者只是保存最后知道的位置您的回收视图和滚动到该位置,当你加载更多的项目

宗政博
2023-03-14

试试这个,

public static class GroupData extends AsyncTask<Void, Void, Void> {
    int size = 0;

    @Override
    protected void onPreExecute() {
        size = groupvalues.size();
    }

    @Override
    protected Void doInBackground(Void... voids) {
        try {
            GroupList gm = new GroupList();
            .....
            groupvalues.add(gm);
        } catch (Exception e) {
            Log.d("Grouplist ", e.toString());
        }
        return null;
    }

    @Override
    protected void onPostExecute(Void aVoid) {
        super.onPostExecute(aVoid);
        mAdapter.notifyItemRangeChanged(size, groupvalues.size() - size);
        progressDialog.dismiss();
    }
}
 类似资料:
  • 我没有太多的运气使用redux版本的React-Router。当我将产品添加到购物车中时,位置确实会改变,但页面不会更新。 ./减速器 ./行动

  • 问题内容: 目前,每35秒更改一次位置并移动10米的距离后,我就会在上绘制一个。 因此,我在位置更改(移动35秒和10米)后立即实现了此功能,我正在绘制。 问题陈述:- 。有时我的应用程序被挂起?可能是因为我的代码在下面的编写方式中效率不高? 基本上,我只需要在每移动35秒和10米的距离后在当前位置绘制一个圆圈。 我的代码有问题吗?任何想法,例如我应该如何进一步改善它,以使其顺利运行。 这是我在M

  • 因此,我有一个标准的,它获取帖子列表并向用户显示。我的问题是,当用户进入活动时,我希望能够将焦点更改为特定的帖子。 例如,用户A看到他收到一个通知,表示有人喜欢他/她的帖子。他/她单击该通知,它将加载用户帖子的活动,然后焦点将更改为用户喜欢的帖子的位置。 我使用意图将传递给活动。然后,我运行,并尝试查看帖子的ID是否与我通过intent发送的

  • 我有一个具有2个视图\控制器的应用程序: 谢谢你。

  • 附注。Link1和link2是我第二个问题的相关答案。不过,他们并没有回答我的问题。

  • 我想改变两个div的位置时悬停在一个div。在下面的代码中,当我悬停在.img div上时,我想移动顶部的.title div(位置例如top:50px),并在其下方显示最初设置为隐藏的.info div。 我正在尝试跟随代码,但似乎不工作的悬停。我将感谢任何帮助。 HTML: CSS: 演示。http://jsfidle.net/upwv3/