【问题标题】:How can I add spacing only between items on RecyclerView?如何仅在 RecyclerView 上的项目之间添加间距?
【发布时间】:2020-04-07 21:31:58
【问题描述】:

正如标题所描述的,我只想要项目之间的间距。不在第一项之前或最后一项之后。我尝试在我的适配器的onBindViewHolder 方法中以编程方式使用填充并从第一项和最后一项中删除填充。

if (position == 0)
    holder.itemView.setPadding(0, 0, holder.itemView.getPaddingRight(), 0);
else if (position == getItemCount() - 1)
    holder.itemView.setPadding(holder.itemView.getPaddingLeft(), 0, 0, 0);

但是当我添加或删除项目时,第一个和最后一个项目的位置可能会改变。由于它们没有重新绑定到视图,因此它们的填充保持不变。例如,我有一个这样的列表:1* *2* *3。我删除 3:1* *2* 并插入 4、5:1* *2* *4 *5* 表示填充)。我希望我解释清楚了。

我也尝试了ItemDecorations,但由于我使用的是动态列表,因此找不到动态方法来删除最后一项的装饰。

【问题讨论】:

    标签: android android-recyclerview


    【解决方案1】:

    您可以在适配器中执行此操作:

      if(position == 0 || position == numlist.size()-1){
    
           // I assume the list name is numlist
    
             holder.asterisk.setVisibility(View.GONE);
    
          // I assume the item name is asterisk                                          
    
      }
    

    【讨论】:

    • 正如我所描述的,我已经尝试在 onBindView 方法中隐藏间距,我应该在哪里使用此代码?
    • 正如我在带有位置条件的适配器中所说的
    • 我已经在我的适配器中尝试了这个,条件是位置。但是当我添加或删除项目时,旧项目的间距保持不变。我更新了我的问题以获取更多详细信息。