RecyclerView:我应该将这种方法放在哪里?

时间:2019-02-28 04:43:29

标签: java android android-recyclerview

我尝试使用以下方法删除一项:

if (paymentType.getPaymentId()==2002) {
    recyclerAdapter.deleteItem(holder.getAdapterPosition());
}

关于我的片段活动,

这是我的适配器上的方法(一个适配器可用于许多RecyclerView)

public void deleteItem(int position){
    data.remove(position);
    notifyItemRemoved(position);
    notifyItemRangeChanged(position, data.size());
    notifyDataSetChanged();

}

但是我遇到了这样的错误:

  

在RecyclerView计算布局或滚动时无法调用此方法

谢谢。

2 个答案:

答案 0 :(得分:0)

这是因为您多次调用notify方法。您只需要通知RecyclerView Adapter中某项已被删除。因此,仅在您的方法中调用notifyItemRemoved()。像这样:

public void deleteItem(int position) {
    data.remove(position);
    notifyItemRemoved(position);
}

答案 1 :(得分:0)

您需要删除该物品。这是最佳做法

if (paymentType.getPaymentId()==2002) {

   rowRootLayout.setVisibility(View.GONE);

}else{

   rowRootLayout.setVisibility(View.VISIBLE);

}