recycleview的应用非常多,在使用Android设备时处处会用到他们,有顶部悬浮,下拉刷新,滑动删除等,这篇文章来介绍滑动删除。
滑动删除在Android中有一个非常广泛的应用就是下拉通知栏中删除通知信息,这个应该是每天都会碰到的。
首先是编写XML文件
在之前已经搭建好了类微信界面的框架,所以在上次的基础上添加东西就可以了,我把添加的内容放在了tab01界面,基本的思路是写好一个recycleview功能的单独且完善的整个系统,再将其添加到原来的文件中。而在XML文件中就是item.xml和include_item.xml,这两个文件的背景调用的是drawable中的XML文件。
item.xml
include_item.xml
另外,想要获得比较好的观感,应该在color.xml中放入颜色相关的文件,可以根据自己的要求调整
Java文件的编写
Java文件很多都与上次的一样,不用修改,只需要添加一个adapter.java文件和touchhelper.java文件及其监听的文件即可,然后在之前的文件上做一点修改,主要要修改的文件是weixinfragment.java,这个文件的主要功能是控制第一个界面,也就是我们添加recycleview的那个界面,我们按XML要求的格式填入要显示的信息即可,另一个比较重要的文件是adapter.java,它控制的是滑动删除的主要功能,代码如下:
package com.example.mywechat;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.recyclerview.widget.RecyclerView;
import java.util.List;
public class adapter extends RecyclerView.Adapter<adapter.swipeviewholder> implements TouchHelperListener {
private List<String>list;
private Context context;
private View inflater;
public adapter(Context context, List<String> list) {
this.context=context;
this.list=list;
}
@Override
public swipeviewholder onCreateViewHolder(ViewGroup parent, int viewType) {
inflater= LayoutInflater.from(context).inflate(R.layout.item,parent,false);
swipeviewholder swipeviewholder=new swipeviewholder(inflater);
return swipeviewholder;
}
@Override
public void onBindViewHolder(swipeviewholder holder, int position) {
holder.tvContent.setText(list.get(position));
}
@Override
public int getItemCount() {return list.size();}
@Override
public void onItemDismiss(int position) {
if (position < 0 || position > getItemCount()) {
return;
}
list.remove(position);
notifyItemRemoved(position);
if (position != list.size()) {
notifyItemRangeChanged(position, list.size() - position);
}
}
public class swipeviewholder extends RecyclerView.ViewHolder{
TextView tvContent;
public swipeviewholder(View itemView) {
super(itemView);
tvContent = itemView.findViewById(R.id.content);
}
}
}
最后提一下recycleview的版本问题,网上大多是V7版本,但是用当前版本的AS中默认下载的androidx.recyclerview:recyclerview:1.1.0在实际编程中更方便。
运行样例
代码仓库地址:https://gitee.com/atbon/mobile-development-technology2.git