再补充一个,再用户点击退出按钮时,想弹出一些弹窗,此时需要着重处理好,不要出现错误:
关闭和.冲突的解决( hascom....impl.)
@Overridepublic void onBackPressed() {/* super.onBackPressed(); 需要注释掉 否则会报错即弹窗依附的Activity消失 注释掉Activity不会主动消失*/mFilterManager.setCurrentFilter(FilterType.NONE);sendBroadcast(new Intent(EditImageSelectActivity.CLOSE_ANIMATION));if (is_show){showDeleteDialog();}}
②滚动监听.,监听是否滚动到最后一项
recyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() {boolean isSlidingToLast = false;@Overridepublic void onScrollStateChanged(RecyclerView recyclerView, int newState) {super.onScrollStateChanged(recyclerView, newState);LinearLayoutManager manager = (LinearLayoutManager) recyclerView.getLayoutManager();// 当停止滑动时if (newState == RecyclerView.SCROLL_STATE_IDLE) {//获取最后一个完全显示的ItemPosition ,角标值 int lastVisibleItem = manager.findLastCompletelyVisibleItemPosition();int totalItemCount = manager.getItemCount();if (lastVisibleItem == (totalItemCount - 1) && isSlidingToLast) {//do something}}}@Overridepublic void onScrolled(RecyclerView recyclerView, int dx, int dy) {super.onScrolled(recyclerView, dx, dy);if (dy > 0) {isSlidingToLast = true;} else {isSlidingToLast = false;}}});
③添加滑动监控.,比如列表滑动时涉及UI变化:
注:这里使用的是()方法,上面使用的是()方法 。
mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {@Overridepublic void onScrollStateChanged(RecyclerView recyclerView, int newState) {if (newState == RecyclerView.SCROLL_STATE_IDLE) {btnClear.show(); //列表停止滑动时 右下角悬浮按钮设为可见}super.onScrollStateChanged(recyclerView, newState);}@Overridepublic void onScrolled(RecyclerView recyclerView, int dx, int dy) {if (dy > 0 || dy < 0 && btnClear.isShown()) {btnClear.hide(); //列表滑动时 右下角悬浮按钮设为不可见}super.onScrolled(recyclerView, dx, dy);}});
④列表项做到左右滑动.,并且滑动时进行删除:
比如方片的效果:
监听事件代码如下:
final SongAdapter songAdapter = new SongAdapter(songList);ItemTouchHelper helper = new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {@Overridepublic boolean onMove(RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, RecyclerView.ViewHolder target) {return false;}@Overridepublic void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {songAdapter.removeItem(viewHolder.getAdapterPosition());}});recyclerView.setAdapter(songAdapter);recyclerView.scrollToPosition(songAdapter.getItemCount() - 1); //进入列表页面时 滑动至最后一项helper.attachToRecyclerView(recyclerView);
自定义删除列表项的方法():
public void removeItem(int position) {mSongList.remove(position);notifyItemRemoved(position); //删除列表数据是调用此方法}
注:这里删除并不是真的删除,只是简单的视觉上的移除,下次进入还是会有数据;真正的删除需要处理其他逻辑,比如调用数据库的删除方法进行数据的删除 。
随时添加 欢迎补充
- ios微内核和鸿蒙微内核,华为鸿蒙OS 1.0.1更新
- Android Wear 手机与手表数据通讯
- Android 7.0修改ro属性
- Android开发笔记之简易画画板的制作
- android-沉浸状态栏以及状态栏背景色如何设置
- 如何将android studio设置复位,将设置恢复到初始化
- 小米android10升级版本
- androidGPS驱动
- Android集成支付宝移动支付功能
- ipad太老了,系统无法更新怎么办