2017-03-09 37 views
-1

我有一個有4個元素的回收站列表,按順序進行滑動操作,每次一個一個地按下撤消按鈕,滑動視圖如何返回到列表頂部?如何依次將滑動視圖重新附加到recyclerview列表中?

MyAdapter

public class RecyclerListAdapter extends RecyclerView.Adapter<RecyclerListAdapter.ItemViewHolder> 
     implements ItemTouchHelperAdapter { 

    private Card lastRemovedItem; 
    private int lastIndex = -1; 


    private final List<Card> mItems = new ArrayList<>(); 

    Card car1 = new Card(R.drawable.card1, "first"); 
    Card car2 = new Card(R.drawable.card2, "Second"); 
    Card car3 = new Card(R.drawable.card3, "Third"); 
    Card car4 = new Card(R.drawable.card4, "fourth"); 


    public RecyclerListAdapter() { 

     mItems.addAll(Arrays.asList(car1, car2, car3, car4)); 
    } 

    @Override 
    public ItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View view = LayoutInflater.from(parent.getContext()).inflate(card, parent, false); 
     ItemViewHolder itemViewHolder = new ItemViewHolder(view); 
     return itemViewHolder; 
    } 

    @Override 
    public void onBindViewHolder(ItemViewHolder holder, int position) { 
     Card card = mItems.get(position); 
     holder.textView.setText(card.getText()); 
     holder.imageView.setImageResource(card.getImage()); 

    } 

    @Override 
    public void onItemDismiss(int position) { 

     lastRemovedItem = mItems.get(position); 
     lastIndex = position; 
     mItems.remove(position); 
     notifyItemRemoved(position); 
    } 


    public void restoreLastItem() { 
     if (lastIndex == -1) 
      return; 

     mItems.add(lastIndex, lastRemovedItem); 
     notifyItemInserted(lastIndex); 
     lastRemovedItem = null; 
     lastIndex = -1; 
    } 


    @Override 
    public void onItemMove(int fromPosition, int toPosition) { 
     Card prev = mItems.remove(fromPosition); 
     mItems.add(toPosition > fromPosition ? toPosition - 1 : toPosition, prev); 
     notifyItemMoved(fromPosition, toPosition); 
    } 

    @Override 
    public int getItemCount() { 
     return mItems.size(); 
    } 

public static class ItemViewHolder extends RecyclerView.ViewHolder implements 
      ItemTouchHelperViewHolder { 

     public final TextView textView; 
     public final ImageView imageView; 

     public ItemViewHolder(View itemView) { 
      super(itemView); 
      textView = (TextView) itemView.findViewById(R.id.heading_text); 
      imageView = (ImageView) itemView.findViewById(R.id.image); 

     } 

我嘗試使用上onItemDismiss方法節省刷卡的項目,並呼籲restoreLastItem但這只是工作的最後刷卡視圖我怎樣才能在這之前的看法回到名單。

回答

0

正如我在你上一個問題中所說的,記下所有移除的卡片,然後以完全相同的方式將它們重新添加回來。

您可以爲此使用堆棧。該堆棧會保留每個移除的卡的副本,您可以通過調用pop將它們按照添加到堆棧的順序進行恢復。

您當然需要做一些錯誤檢查以確保堆棧不是空的。

e.g

private Stack<Card> removedItems = new Stack<Card>(); 


private void Remove() { 

    removedItems.push(cardToRemove); 

} 

private void Restore() { 

    Card cardToRestore = removedItems.pop() 

} 
相關問題