package
com.android.gfgapp;
import
androidx.annotation.NonNull;
import
androidx.appcompat.app.AppCompatActivity;
import
androidx.recyclerview.widget.DividerItemDecoration;
import
androidx.recyclerview.widget.ItemTouchHelper;
import
androidx.recyclerview.widget.RecyclerView;
import
android.os.Bundle;
import
java.util.ArrayList;
import
java.util.Collections;
import
java.util.List;
public
class
MainActivity
extends
AppCompatActivity {
RecyclerView recyclerView;
RecyclerAdapter recyclerAdapter;
List<String> citiesList;
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
citiesList =
new
ArrayList<>();
citiesList.add(
"Tokyo"
);
citiesList.add(
"New York City"
);
citiesList.add(
"Paris"
);
citiesList.add(
"London"
);
citiesList.add(
"Dubai"
);
citiesList.add(
"Singapore"
);
citiesList.add(
"Hong Kong"
);
citiesList.add(
"Shanghai"
);
citiesList.add(
"Los Angeles"
);
citiesList.add(
"Chicago"
);
citiesList.add(
"Miami"
);
citiesList.add(
"Sydney"
);
citiesList.add(
"Rio de Janeiro"
);
citiesList.add(
"Cape Town"
);
citiesList.add(
"Mumbai"
);
citiesList.add(
"Bangkok"
);
citiesList.add(
"Moscow"
);
citiesList.add(
"Rome"
);
citiesList.add(
"Barcelona"
);
citiesList.add(
"Toronto"
);
citiesList.add(
"Berlin"
);
citiesList.add(
"Istanbul"
);
citiesList.add(
"Tokyo"
);
citiesList.add(
"Vancouver"
);
recyclerView = findViewById(R.id.recyclerView);
recyclerAdapter =
new
RecyclerAdapter(citiesList);
recyclerView.setAdapter(recyclerAdapter);
DividerItemDecoration dividerItemDecoration =
new
DividerItemDecoration(
this
, DividerItemDecoration.VERTICAL);
recyclerView.addItemDecoration(dividerItemDecoration);
ItemTouchHelper itemTouchHelper =
new
ItemTouchHelper(simpleCallback);
itemTouchHelper.attachToRecyclerView(recyclerView);
}
ItemTouchHelper.SimpleCallback simpleCallback =
new
ItemTouchHelper.SimpleCallback(ItemTouchHelper.UP | ItemTouchHelper.DOWN | ItemTouchHelper.START | ItemTouchHelper.END,
0
) {
@Override
public
boolean
onMove(
@NonNull
RecyclerView recyclerView,
@NonNull
RecyclerView.ViewHolder viewHolder,
@NonNull
RecyclerView.ViewHolder target) {
int
fromPosition = viewHolder.getAdapterPosition();
int
toPosition = target.getAdapterPosition();
Collections.swap(citiesList, fromPosition, toPosition);
recyclerView.getAdapter().notifyItemMoved(fromPosition, toPosition);
return
false
;
}
@Override
public
void
onSwiped(
@NonNull
RecyclerView.ViewHolder viewHolder,
int
direction) {
}
};
}