RecyclerView在刷新时增加了额外的空间

时间:2018-08-29 14:11:33

标签: android android-recyclerview

我已经在我的项目中实现了RecyclerView,在onPostExecute方法上,我已将Decoration添加到我的recyclerview中,但是当刷新时,Decoration会增加。 我的代码:

protected void onPostExecute(Void aVoid) {
    super.onPostExecute(aVoid);
    progressDialog.dismiss();
    FeedsAdapter adapter = new FeedsAdapter(context, feedItems);
    recyclerView.setLayoutManager(new LinearLayoutManager(context));
    recyclerView.addItemDecoration(new VerticalSpace(20));
    recyclerView.setAdapter(adapter);

}

2 个答案:

答案 0 :(得分:1)

您可能需要先删除装饰,然后再添加新装饰。

每次调用onPostExecute方法时,它将向RecyclerView添加新的ItemDecoration(这就是为什么空间增加的原因)。 只需在添加之前尝试将其删除,例如通过removeItemDecoration(referenceToItemDecoration)removeItemDecorationAt(0)方法。

答案 1 :(得分:0)

您不必每次运行http调用(或执行postExecute的任何操作)时都创建一个新的适配器,您只需要更新feedItems并调用NotifyDataSetChanged()。

现在,您将在每次运行postExecute时重新创建适配器并添加垂直空间,因此也许只需在oncreate中添加适配器和verticalSpace,然后仅在postExecute中更新数据集,然后notifyDataSetChanged