public class MainActivity extends Activity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
IView iView = new SwipIView();//new DragView();
iView.init(this);
}
}
侧滑:
public class SwipIView implements IView {
@Override
public void init(final Activity activity) {
final List<String> data = new ArrayList<>();
for(int i = 0 ; i < 100 ; i ++){
data.add(String.valueOf(i));
}
final RecyclerView recyclerView = new RecyclerView(activity);
activity.setContentView(recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, false));
recyclerView.setAdapter(new RecyclerView.Adapter() {
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
TextView textView = new TextView(activity);
textView.setTextSize(50);
textView.setId(1);
textView.setLayoutParams(new RecyclerView.LayoutParams(RecyclerView.LayoutParams.MATCH_PARENT, RecyclerView.LayoutParams.WRAP_CONTENT));
return new RecyclerView.ViewHolder(textView){};
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
((TextView)holder.itemView.findViewById(1)).setText(data.get(position));
}
@Override
public int getItemCount() {
return data.size();
}
});
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new ItemTouchHelper.Callback() {
@Override
public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
//ItemTouchHelper.UP | ItemTouchHelper.DOWN | ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT
return makeMovementFlags(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT);
}
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
int toPosition = target.getAdapterPosition();
int fromPosition = viewHolder.getAdapterPosition();
recyclerView.getAdapter().notifyItemMoved(fromPosition, toPosition);
Collections.swap(data, fromPosition, toPosition);
return true;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
int position = viewHolder.getAdapterPosition();
data.remove(position);
recyclerView.getAdapter().notifyItemRemoved(position);
}
@Override
public boolean isLongPressDragEnabled() {
return true;
}
});
itemTouchHelper.attachToRecyclerView(recyclerView);
}
}
垂直拖动:
public class DragView implements IView {
@Override
public void init(final Activity activity) {
final List<String> data = new ArrayList<>();
for(int i = 0 ; i < 100 ; i ++){
data.add(String.valueOf(i));
}
RecyclerView recyclerView = new RecyclerView(activity);
activity.setContentView(recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(activity, LinearLayoutManager.VERTICAL, false));
recyclerView.setAdapter(new RecyclerView.Adapter() {
@NonNull
@Override
public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
TextView textView = new TextView(activity);
textView.setTextSize(50);
textView.setId(1);
textView.setLayoutParams(new RecyclerView.LayoutParams(RecyclerView.LayoutParams.MATCH_PARENT, RecyclerView.LayoutParams.WRAP_CONTENT));
return new RecyclerView.ViewHolder(textView){};
}
@Override
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
((TextView)holder.itemView.findViewById(1)).setText(data.get(position));
}
@Override
public int getItemCount() {
return data.size();
}
});
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(new ItemTouchHelper.Callback() {
@Override
public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
//ItemTouchHelper.UP | ItemTouchHelper.DOWN | ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT
return makeMovementFlags(ItemTouchHelper.UP | ItemTouchHelper.DOWN, 0);
}
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
int toPosition = target.getAdapterPosition();
int fromPosition = viewHolder.getAdapterPosition();
recyclerView.getAdapter().notifyItemMoved(fromPosition, toPosition);
Collections.swap(data, fromPosition, toPosition);
return true;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
}
@Override
public boolean isLongPressDragEnabled() {
return true;
}
});
itemTouchHelper.attachToRecyclerView(recyclerView);
}
}