2017-05-29 96 views
1

我在recyclerView中有多個項目,每個項目都有一個十字按鈕。當我點擊Cross按鈕時,我想刪除該項目。我能夠滑動該項目,但想要在按鈕單擊上實現它。如何點擊按鈕時滑動RecyclerView項目?

我的適配器是

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

private static final String[] STRINGS = new String[]{ 
     "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten" 
}; 

private final List<String> mItems = new ArrayList<>(); 
private Context context; 
private ItemTouchHelper.Callback callback; 


public RecyclerListAdapter(Activity activity, ItemTouchHelper.Callback callback) { 
    mItems.addAll(Arrays.asList(STRINGS)); 
    this.context = activity; 
    this.callback = callback; 
} 

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

@Override 
public void onBindViewHolder(final ItemViewHolder holder, final int position) { 
    holder.textView.setText(mItems.get(position)); 
    holder.ivCancel.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
     // Swipe item from here 
     } 
    }); 
} 

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

@Override 
public void onItemMove(int fromPosition, int toPosition) { 
    if (fromPosition < toPosition) { 
     for (int i = fromPosition; i < toPosition; i++) { 
      Collections.swap(mItems, i, i + 1); 
     } 
    } else { 
     for (int i = fromPosition; i > toPosition; i--) { 
      Collections.swap(mItems, i, i - 1); 
     } 
    } 
    notifyItemMoved(fromPosition, toPosition); 
} 

@Override 
public void onItemDismiss(int position) { 
    mItems.remove(position); 
    notifyItemRemoved(position); 
} 

我的回調是

public class SimpleItemTouchHelperCallback extends ItemTouchHelper.Callback { 

private final ItemTouchHelperAdapter mAdapter; 

public SimpleItemTouchHelperCallback(ItemTouchHelperAdapter adapter) { 
    mAdapter = adapter; 
} 

@Override 
public boolean isLongPressDragEnabled() { 
    return false; 
} 

@Override 
public boolean isItemViewSwipeEnabled() { 
    return true; 
} 

@Override 
public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) { 
    int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN; 
    int swipeFlags = ItemTouchHelper.START | ItemTouchHelper.END; 
    return makeMovementFlags(dragFlags, swipeFlags); 
} 

@Override 
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, 
         RecyclerView.ViewHolder target) { 
    mAdapter.onItemMove(viewHolder.getAdapterPosition(), target.getAdapterPosition()); 
    return true; 
} 

@Override 
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) { 
    mAdapter.onItemDismiss(viewHolder.getAdapterPosition()); 
} 

我的活動是

public class MainFragment extends Activity { 

public ItemTouchHelper.Callback callback; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Activity activity = MainFragment.this; 
    RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view); 
    recyclerView.setHasFixedSize(true); 
    recyclerView.setLayoutManager(new LinearLayoutManager(activity)); 


    RecyclerListAdapter adapter = new RecyclerListAdapter(activity,callback); 
    recyclerView.setAdapter(adapter); 


    callback = new SimpleItemTouchHelperCallback(adapter); 


    ItemTouchHelper touchHelper = new ItemTouchHelper(callback); 
    touchHelper.attachToRecyclerView(recyclerView); 


} 

請指導我..

+0

用我更新的代碼更新您的RecyclerView適配器 –

回答

0

設置跨按鈕的onClickListener在適配器o nBindViewHolder方法,並從該數組中刪除該項目(藉助位置參數)並調用notifyDatasetChanged,或者您可以在那裏調用您的刷卡方法。

相關問題