2017-08-13 30 views
0

我有一個回收站適配器,在視圖項中有一個刪除按鈕(del)。 我在click事件中使用下面的代碼。如何在移除物品時保持回收站適配器的位置?

@Override 
public void onBindViewHolder(ViewHolder holder, int position) 
{ 
    holder.del.setTag(position); 
    holder.del.setOnClickLintener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) 
     { 
      int pos= (int) v.getTag(); 
      //remove view item 
      notifyItemRemoved(pos); 
      //remove equivalent arraylist item 
      listitems.remove(pos); 
     } 
    }); 
} 

這不更新視圖中的項目我認爲是因爲onBindViewHolder()不叫了現有項目的變量值。我如何更新這些值或者是否存在不同的方法。

+0

一次嘗試,首先從比它通知列表中刪除該項目。 –

回答

1

您必須從列表中刪除該項目,然後您必須致電notifyItemRemoved(pos)

@Override 
public void onBindViewHolder(ViewHolder holder, int position) 
{ 
    holder.del.setTag(position); 
    holder.del.setOnClickLintener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) 
     { 
      int pos = (int) v.getTag(); 
      //remove equivalent arraylist item 
      listitems.remove(pos); 
      //remove view item 
      notifyItemRemoved(pos); 


      new Handler().postDelayed(new Runnable(){ 
       @override 
       void run(){ 
       notifyDatasetChanged() 
       } 
      },400); 

     } 
    }); 
} 

希望它能幫助:)

+0

很抱歉找回這麼晚。但是你的建議不起作用。 onBind在現有項目上仍未調用。 – Deepak

+0

也可以通過notifyDatasetChanged來更新適配器中的所有項目。查看更新回答 –

+0

我知道調用notifyDatasetChanged();將解決這個問題,但這似乎也取消了爲notifyItemRemoved(pos)顯示的動畫; – Deepak

相關問題