15b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar/* 25b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar * Copyright (C) 2015 The Android Open Source Project 35b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar * 45b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar * Licensed under the Apache License, Version 2.0 (the "License"); 55b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar * you may not use this file except in compliance with the License. 65b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar * You may obtain a copy of the License at 75b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar * 85b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar * http://www.apache.org/licenses/LICENSE-2.0 95b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar * 105b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar * Unless required by applicable law or agreed to in writing, software 115b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar * distributed under the License is distributed on an "AS IS" BASIS, 125b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar * See the License for the specific language governing permissions and 145b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar * limitations under the License. 155b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar */ 165b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 175b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyarpackage com.example.android.supportv7.widget.touch; 185b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 195b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyarimport com.example.android.supportv7.Cheeses; 205b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyarimport com.example.android.supportv7.R; 215b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyarimport com.example.android.supportv7.widget.util.ConfigToggle; 225b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyarimport com.example.android.supportv7.widget.util.ConfigViewHolder; 235b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 245b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyarimport android.app.Activity; 255b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyarimport android.graphics.Canvas; 265b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyarimport android.os.Bundle; 275b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyarimport android.support.v7.widget.CardView; 285b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyarimport android.support.v7.widget.LinearLayoutManager; 295b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyarimport android.support.v7.widget.RecyclerView; 305b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyarimport android.support.v7.widget.helper.ItemTouchHelper; 315b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyarimport android.view.LayoutInflater; 325b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyarimport android.view.View; 335b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyarimport android.view.ViewGroup; 345b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyarimport android.widget.Button; 355b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyarimport android.widget.TextView; 365b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 375b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyarimport java.util.ArrayList; 385b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyarimport java.util.Arrays; 395b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyarimport java.util.List; 405b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 415b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar/** 425b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar * Sample activity from which ItemTouchHelper demo activities inherit. 435b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar */ 445b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyarabstract public class ItemTouchHelperActivity extends Activity { 455b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 465b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public RecyclerView mRecyclerView; 475b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 485b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public ItemTouchAdapter mAdapter; 495b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 505b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public ItemTouchHelper mItemTouchHelper; 515b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 525b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public ItemTouchHelper.Callback mCallback; 535b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 545b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar private ConfigToggle[] mConfigToggles; 555b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 565b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar @Override 575b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public void onCreate(Bundle savedInstanceState) { 585b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar super.onCreate(savedInstanceState); 595b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar setContentView(R.layout.activity_item_touch); 60fa2e2acf79d791a90410025daad438968550d18cAlan Viverette mRecyclerView = findViewById(R.id.recycler_view); 615b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar mRecyclerView.setHasFixedSize(true); 625b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar mAdapter = createAdapter(); 635b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar mRecyclerView.setAdapter(mAdapter); 645b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); 655b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar mItemTouchHelper = createItemTouchHelper(); 665b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar mItemTouchHelper.attachToRecyclerView(mRecyclerView); 675b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar initToggles(); 685b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar } 695b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 705b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar private void initToggles() { 715b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar mConfigToggles = createConfigToggles(); 72fa2e2acf79d791a90410025daad438968550d18cAlan Viverette RecyclerView configView = findViewById(R.id.config_recycler_view); 735b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar configView.setAdapter(new RecyclerView.Adapter<ConfigViewHolder>() { 745b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar @Override 755b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public ConfigViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 765b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar return new ConfigViewHolder(LayoutInflater.from(parent.getContext()) 775b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar .inflate(R.layout.config_view_toggle, parent, false)); 785b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar } 795b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 805b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar @Override 815b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public void onBindViewHolder(ConfigViewHolder holder, int position) { 825b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar ConfigToggle toggle = mConfigToggles[position]; 835b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar holder.bind(toggle); 845b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar } 855b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 865b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar @Override 875b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public int getItemCount() { 885b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar return mConfigToggles.length; 895b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar } 905b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar }); 915b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar configView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, 925b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar false)); 935b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar configView.setHasFixedSize(true); 945b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar } 955b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 965b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar abstract ConfigToggle[] createConfigToggles(); 975b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 985b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public ItemTouchHelper createItemTouchHelper() { 995b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar mCallback = createCallback(); 1005b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar return new ItemTouchHelper(mCallback); 1015b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar } 1025b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 1035b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public ItemTouchHelper.Callback createCallback() { 1045b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar return new ItemTouchHelper.Callback() { 1055b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar @Override 1065b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public int getMovementFlags(RecyclerView recyclerView, 1075b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar RecyclerView.ViewHolder viewHolder) { 1085b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar return ItemTouchHelperActivity.this.getMovementFlags(recyclerView, viewHolder); 1095b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar } 1105b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 1115b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar @Override 1125b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, 1135b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar RecyclerView.ViewHolder target) { 1145b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar mAdapter.move(viewHolder.getAdapterPosition(), target.getAdapterPosition()); 1155b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar return true; 1165b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar } 1175b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 1185b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar @Override 1195b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) { 1205b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar mAdapter.delete(viewHolder.getAdapterPosition()); 1215b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar } 1225b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 1235b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar @Override 1245b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public void onSelectedChanged(RecyclerView.ViewHolder viewHolder, int actionState) { 1255b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar super.onSelectedChanged(viewHolder, actionState); 1265b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar ItemTouchHelperActivity.this.onSelectedChanged(viewHolder, actionState); 1275b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar } 1285b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 1295b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar @Override 1305b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public void onChildDraw(Canvas c, RecyclerView recyclerView, 1315b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar RecyclerView.ViewHolder viewHolder, 1325b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar float dX, float dY, int actionState, boolean isCurrentlyActive) { 1335b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar if (ItemTouchHelperActivity.this.onChildDraw(c, recyclerView, viewHolder, 1345b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar dX, dY, actionState, isCurrentlyActive)) { 1355b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar return; 1365b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar } 1375b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, 1385b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar isCurrentlyActive); 1395b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar } 1405b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 1415b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar @Override 1425b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public void onChildDrawOver(Canvas c, RecyclerView recyclerView, 1435b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, 1445b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar boolean isCurrentlyActive) { 1455b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar if (ItemTouchHelperActivity.this.onChildDrawOver(c, recyclerView, viewHolder, 1465b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar dX, dY, actionState, isCurrentlyActive)) { 1475b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar return; 1485b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar } 1495b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar super.onChildDrawOver(c, recyclerView, viewHolder, dX, dY, actionState, 1505b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar isCurrentlyActive); 1515b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar } 1525b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 1535b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar @Override 1545b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public boolean isLongPressDragEnabled() { 1555b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar return ItemTouchHelperActivity.this.isLongPressDragEnabled(); 1565b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar } 1575b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 1585b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar @Override 1595b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public boolean isItemViewSwipeEnabled() { 1605b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar return ItemTouchHelperActivity.this.isPointerSwipeEnabled(); 1615b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar } 1625b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 1635b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar @Override 1645b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public void clearView(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) { 1655b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar super.clearView(recyclerView, viewHolder); 1665b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar ItemTouchHelperActivity.this.clearView(viewHolder); 1675b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar } 1685b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar }; 1695b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar } 1705b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 1715b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar /** 1725b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar * @return True if we should NOT call parent 1735b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar */ 1745b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public boolean onChildDraw(Canvas c, RecyclerView recyclerView, 1755b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar RecyclerView.ViewHolder viewHolder, 1765b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar float dX, float dY, int actionState, boolean isCurrentlyActive) { 1775b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar return false; 1785b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar } 1795b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 1805b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar /** 1815b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar * @return True if we should NOT call parent 1825b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar */ 1835b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public boolean onChildDrawOver(Canvas c, RecyclerView recyclerView, 1845b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, 1855b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar boolean isCurrentlyActive) { 1865b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar return false; 1875b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar } 1885b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 1895b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public void clearView(RecyclerView.ViewHolder viewHolder) { 1905b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 1915b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar } 1925b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 1935b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public void onSelectedChanged(RecyclerView.ViewHolder viewHolder, int actionState) { 1945b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 1955b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar } 1965b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 1975b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public boolean isLongPressDragEnabled() { 1985b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar return true; 1995b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar } 2005b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 2015b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public boolean isPointerSwipeEnabled() { 2025b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar return true; 2035b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar } 2045b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 2055b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public ItemTouchViewHolder onCreateViewHolder(ViewGroup parent) { 2065b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar ItemTouchViewHolder itemTouchViewHolder = new ItemTouchViewHolder( 2075b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar LayoutInflater.from(parent.getContext()) 2085b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar .inflate(R.layout.touch_item, parent, false)); 2095b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar return itemTouchViewHolder; 2105b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar } 2115b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 2125b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar abstract public int getMovementFlags(RecyclerView recyclerView, 2135b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar RecyclerView.ViewHolder viewHolder); 2145b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 2155b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public ItemTouchAdapter createAdapter() { 2165b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar return new ItemTouchAdapter(); 2175b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar } 2185b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 2195b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public void onBind(ItemTouchViewHolder viewHolder) { 2205b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 2215b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar } 2225b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 2235b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public void onCreateViewHolder(ItemTouchViewHolder viewHolder) { 2245b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 2255b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar } 2265b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 2275b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public class ItemTouchViewHolder extends RecyclerView.ViewHolder { 2285b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 2295b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public final TextView textView; 2305b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 2315b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public final Button actionButton; 2325b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 2335b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public final CardView cardView; 2345b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 2355b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public final View overlay; 2365b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 2375b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public ItemTouchViewHolder(View itemView) { 2385b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar super(itemView); 2395b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar cardView = (CardView) itemView; 2405b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar textView = (TextView) itemView.findViewById(R.id.text_view); 2415b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar actionButton = (Button) itemView.findViewById(R.id.action_button); 2425b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar overlay = itemView.findViewById(R.id.overlay); 2435b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar } 2445b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar } 2455b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 2465b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public class ItemTouchAdapter extends RecyclerView.Adapter<ItemTouchViewHolder> { 2475b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 2485b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar private List<String> mItems = new ArrayList<String>(); 2495b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 2505b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public ItemTouchAdapter() { 2515b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar mItems.addAll(Arrays.asList(Cheeses.sCheeseStrings)); 2525b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar } 2535b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 2545b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar @Override 2555b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public ItemTouchViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 2565b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar return ItemTouchHelperActivity.this.onCreateViewHolder(parent); 2575b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar } 2585b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 2595b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar @Override 2605b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public void onBindViewHolder(ItemTouchViewHolder holder, int position) { 2615b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar holder.textView.setText(mItems.get(position)); 2625b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar onBind(holder); 2635b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar } 2645b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 2655b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public void delete(int position) { 2665b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar mItems.remove(position); 2675b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar notifyItemRemoved(position); 2685b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar } 2695b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 2705b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public void move(int from, int to) { 2715b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar String prev = mItems.remove(from); 2725b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar mItems.add(to > from ? to - 1 : to, prev); 2735b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar notifyItemMoved(from, to); 2745b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar } 2755b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 2765b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar @Override 2775b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar public int getItemCount() { 2785b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar return mItems.size(); 2795b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar } 2805b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar } 2815b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 2825b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar 2835b611d45d8d84bd604e6ce855f9520499ff89b68Yigit Boyar} 284