2017-03-09 38 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() 

} 
相关问题