ItemTouchHelper的使用可以帮助我们实现侧滑删除效果
public class MainActivity extends AppCompatActivity implements StagListener {
private ItemTouchHelper helper;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RecyclerView recyclerView= (RecyclerView) findViewById(R.id.recly);
DataUtil dataUtil=new DataUtil();
List<Bean> getlist = dataUtil.getlist();
MyAdapter adapter=new MyAdapter(getlist,this);
LinearLayoutManager manager=new LinearLayoutManager(this, LinearLayout.VERTICAL,false);
recyclerView.setLayoutManager(manager);//recyclerView的item的布局交给了布局管理器
recyclerView.setAdapter(adapter);
ItemCallBack callback=new ItemCallBack(adapter);
helper = new ItemTouchHelper(callback);//创建ItemTouchHelper对象,传递自定义的 callback对象
helper.attachToRecyclerView(recyclerView);//关联recyclerView
}
//回调方法//实现接口中的方法
@Override
public void getViewHolder(RecyclerView.ViewHolder holder) {
helper.startDrag(holder);//辅助类ItemTouchHelper提供的方法,可以上下拖动
}
}
//adapter继承 RecyclerView.Adapter
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> implements ItemMoveListener {
//让adapter实现接口中的方法可以获取到移动和删除的item的位置
List<Bean> list = new ArrayList<Bean>();
StagListener listener;
public MyAdapter(List<Bean> list,StagListener listener) {
this.list = list;
this.listener=listener;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item, null);
MyViewHolder holder = new MyViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(final MyViewHolder holder, int position) {
holder.textView.setText(list.get(position).getName());
holder.imageView.setImageResource(list.get(position).getId());
holder.imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
listener.getViewHolder(holder);//向外传递viewholder对象
}
});
}
@Override
public int getItemCount() {
return list.size();
}
@Override
public boolean move(int formPosition, int toPosition) {
notifyItemMoved(formPosition,toPosition);//类库中提供的方法
return false;
}
@Override
public boolean deleteItem(int position) {
notifyItemRemoved(position);
return false;
}
public class MyViewHolder extends RecyclerView.ViewHolder {
TextView textView;
ImageView imageView;
public MyViewHolder(View itemView) {
super(itemView);
textView = (TextView) itemView.findViewById(R.id.text2);
imageView = (ImageView) itemView.findViewById(R.id.immage);
}
}
//自定义拖动监听接口吧holder传递进入
public interface StagListener {
void getViewHolder(RecyclerView.ViewHolder holder);
}
//自定义接口
public interface ItemMoveListener {
boolean move(int formPosition,int toPosition);//移动
boolean deleteItem(int position);//删除
}
//自定义回调接口继承ItemTouchHelper.callback
public class ItemCallBack extends ItemTouchHelper.Callback
{
ItemMoveListener listener;
public ItemCallBack (ItemMoveListener listener){
this.listener=listener;
}
@Override
public int getMovementFlags(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder) {
int move = ItemTouchHelper.UP | ItemTouchHelper.DOWN;
int i = ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT;
return makeMovementFlags(move,i);
}
@Override
public boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {
listener.move(viewHolder.getAdapterPosition(),target.getAdapterPosition());
//把当前拖动的view传递出去
return true;
}
@Override
public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
listener.deleteItem(viewHolder.getAdapterPosition());
//把当前删除的view传递出去
}
@Override
public boolean isItemViewSwipeEnabled() {
return true;
}
@Override
public boolean isLongPressDragEnabled() {
return true;
}
}
//实体类
public class Bean {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class DataUtil {
int[] date = new int[]{R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher,
R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher,
R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher,
R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher,
R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher,};
public List<Bean> getlist() {
List<Bean> list = new ArrayList<Bean>();
for (int i = 0; i < 15; i++) {
Bean bean = new Bean();
bean.setId(date[i]);
bean.setName("第" + String.valueOf(i) + "个");
list.add(bean);
}
return list;
}
}
recyclerview侧滑删除
最新推荐文章于 2023-05-20 23:14:08 发布