利用RecycleView怎么实现一个侧滑删除功能-创新互联
利用RecycleView怎么实现一个侧滑删除功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

一、添加依赖
// 侧滑删除依赖 implementation 'com.yanzhenjie.recyclerview:support:1.3.2'
二、布局文件
这里使用的的控件是: com.yanzhenjie.recyclerview.SwipeRecyclerView
三、代码实现
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import com.google.gson.Gson;
import com.yanzhenjie.recyclerview.SwipeRecyclerView;
import com.yanzhenjie.recyclerview.touch.OnItemMoveListener;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class MainActivity extends AppCompatActivity {
SwipeRecyclerView srv; //控件
List dataAll = new ArrayList<>(); //存数据的集合
MyAdapter myAdapter; //适配器
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化控件
initView();
//得到数据, 数据可以模拟, 不在展示
initData();
//监听事件
initListener();
}
// TODO 3 监听事件
private void initListener() {
srv.setItemViewSwipeEnabled(true); //侧滑删除 默认关闭
srv.setLongPressDragEnabled(true); //拖拽排序 默认关闭
// 拖拽监听
srv.setOnItemMoveListener(new OnItemMoveListener() {
// 此方法在Item拖拽交换位置时被调用。
@Override
public boolean onItemMove(RecyclerView.ViewHolder srcHolder, RecyclerView.ViewHolder targetHolder) {
// 第一个参数是要交换为之的Item,第二个是目标位置的Item。
int adapterPosition = srcHolder.getAdapterPosition();
int adapterPosition1 = targetHolder.getAdapterPosition();
// swap交换数据,并更新adapter。
Collections.swap(dataAll, adapterPosition, adapterPosition1);
myAdapter.notifyItemMoved(adapterPosition, adapterPosition1);
return true;// 返回true,表示数据交换成功,ItemView可以交换位置。
}
// 此方法在Item在侧滑删除时被调用。
@Override
public void onItemDismiss(RecyclerView.ViewHolder srcHolder) {
// 从数据源移除该Item对应的数据,并刷新Adapter。
int position = srcHolder.getAdapterPosition();
dataAll.remove(position);
myAdapter.notifyItemRemoved(position);
}
});
}
//TODO 2 得到数据
private void initData() {
//这里使用回调的方式得到的数据
OkgoData.getInstance().getDataByOkGo(new DataCallBack() {
@Override
public void getDataJson(String json) {
List data = new Gson().fromJson(json, JavaBean.class).getData();
dataAll.clear();
dataAll.addAll(data);
myAdapter.setNewData(dataAll);
myAdapter.notifyDataSetChanged(); //适配器通知更新
}
});
}
//TODO 1 初始化控件
private void initView() {
srv = findViewById(R.id.srv); //找到控件
// 添加下划线
DividerItemDecoration decoration = new DividerItemDecoration(this, DividerItemDecoration.VERTICAL);
srv.addItemDecoration(decoration);
//添加适配器
myAdapter = new MyAdapter(R.layout.layout_adapter_item, dataAll);
srv.setAdapter(myAdapter);
//添加布局管理 必须添加不然无法显示
LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
srv.setLayoutManager(layoutManager);
}
} 看完上述内容,你们掌握利用RecycleView怎么实现一个侧滑删除功能的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!
分享文章:利用RecycleView怎么实现一个侧滑删除功能-创新互联
URL链接:http://www.jxjierui.cn/article/egscj.html


咨询
建站咨询
