RecyclerView实现滑动删除
实现界面展示:
前端页面设计:
主要使用RecyclerView,导入androidx.recyclerview:recyclerview:1.1.0的包
微信界面
tab01
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/swipe"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:overScrollMode="never"
android:scrollbars="none"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
item
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="50dp"
xmlns:tools="http://schemas.android.com/tools"
android:layout_margin="8dp"
android:background="@drawable/common_bg"
android:orientation="vertical">
<TextView
android:id="@+id/content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="8dp"
tools:text="内容" />
</LinearLayout>
include_item
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/header_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#3E8841"
android:padding="10dp"
android:textColor="@android:color/white"
android:textSize="14sp"
tools:text="@string/app_name" />
后端代码:
在Fragment下面使用LinearLayoutManager传入this和在Activity中有些不同,要传入this.getActivity();
主要代码
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);
}
}
}
最后附上码云仓库:
https://gitee.com/GAIALscariot/MyWeChat_recycleview_swipe/tree/master