publicclassMoveItemActivityextendsAppCompatActivity {private RecyclerView rl;
private MyAdapter adapter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_coo4);
initRecycler();
}
private void initRecycler() {
rl = findViewById(R.id.rv_content);
rl.setLayoutManager(new LinearLayoutManager(this));
List<String> list = new ArrayList<>();
for (int i = 0; i < 50; i++) {
list.add("这是模拟数据" + i);
}
rl.setAdapter(adapter = new MyAdapter(list));
}
publicclassMyAdapterextendsRecyclerView.Adapter<Holder> implementsItemTouchMoveListener {List<String> list;
public MyAdapter(List<String> list) {
this.list = list;
}
@NonNull
@Override
public Holder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View inflate = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_recycler_main, parent, false);
Holder holder = new Holder(inflate);
holder.name = inflate.findViewById(R.id.tv_name);
holder.image = inflate.findViewById(R.id.iv_image);
return holder;
}
@Override
public void onBindViewHolder(@NonNull Holder holder, int position) {
holder.name.setText(list.get(position));
}
@Override
public int getItemCount() {
returnlist.size();
}
}
classHolderextendsRecyclerView.ViewHolder {public TextView name;
public View image;
public Holder(@NonNull View itemView) {
super(itemView);
}
}
}
运行截图:
使用v7包提供的ItemTouchHelper类处理Item的拖拽事件:
1.默认构造:
/**
* Creates an ItemTouchHelper that will work with the given Callback.
* <p>
* You can attach ItemTouchHelper to a RecyclerView via
* {@link #attachToRecyclerView(RecyclerView)}. Upon attaching, it will add an item decoration,
* an onItemTouchListener and a Child attach / detach listener to the RecyclerView.
*
* @param callback The Callback which controls the behavior of this touch helper.
*/publicItemTouchHelper(Callback callback) {
mCallback = callback;
}