重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
利用RecycleView怎么实现一个侧滑删除功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
创新互联建站主要为客户提供服务项目涵盖了网页视觉设计、VI标志设计、网络营销推广、网站程序开发、HTML5响应式重庆网站建设公司、成都做手机网站、微商城、网站托管及成都网站改版、WEB系统开发、域名注册、国内外服务器租用、视频、平面设计、SEO优化排名。设计、前端、后端三个建站步骤的完善服务体系。一人跟踪测试的建站服务标准。已经为塔吊租赁行业客户提供了网站营销推广服务。一、添加依赖
// 侧滑删除依赖 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; //控件 ListdataAll = 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怎么实现一个侧滑删除功能的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!