安卓侧滑删除刷新(recylerview),以及删除更新item

效果

效果展示

1、布局

RecyclerView

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/collection_poem_listview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toBottomOf="@+id/collection_poem_title"/>

item布局,新建xml,其中SwipeMenuLayout(需要导包)参考一个零耦合的侧滑菜单 SwipeMenuLayout

<cn.ljp.swipemenu.SwipeMenuLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/swipe_menu_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="20dp"
    android:layout_marginRight="20dp"
    app:isEnableLeftMenu="false"
    app:isEnableSwipe="true"
    app:isClickMenuAndClose="false"
    app:isOpenChoke="true">
    <LinearLayout
        android:id="@+id/content"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:background="@drawable/col_bord">
        <TextView
            android:id="@+id/recommend_poem_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="8pt"
            android:textColor="#000"
            android:text="客亭"
            android:textStyle="bold"
            android:lineSpacingMultiplier="1.5"
            android:layout_marginLeft="20dp"
            android:layout_marginTop="30dp"/>
        <TextView
            android:id="@+id/recommend_poem_author"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="6pt"
            android:textColor="#E0C091"
            android:text="唐代/杜甫"
            android:lineSpacingMultiplier="1.0"
            android:layout_marginLeft="20dp" />
        <TextView
            android:id="@+id/recommend_poem_first_sentence"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="8pt"
            android:textColor="#848484"
            android:text="秋窗犹曙色,落木更天风。"
            android:lineSpacingMultiplier="1.5"
            android:layout_marginLeft="20dp"
            android:layout_marginBottom="20dp"/>
    </LinearLayout>
    <TextView
        android:id="@+id/menu"
        android:layout_width="120dp"
        android:layout_height="wrap_content"
        android:text="删除"
        android:textSize="18sp"
        android:textColor="@color/white"
        android:background="#F24C4C"
        android:paddingLeft="42dp"
        android:paddingRight="42dp"
        android:paddingTop="45dp"
        android:paddingBottom="44dp"/>

</cn.ljp.swipemenu.SwipeMenuLayout>

2、适配器(两个点击事件),点击删除时候更新item内容

点击事件设置两个,一个是点击之前的linerlayout中的内容,另个是点击删除的textview
1.接口

public interface onItemClickListener{
        void onClick(int pos);
        void ontClick(int pos);
    }

2.两个点击

holder.linearLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mlistener.onClick(position);
            }
        });
        holder.menu.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mlistener.ontClick(position);
                notifyItemRemoved(position);
                notifyDataSetChanged();
            }
        });

3.删除条目并更新此条目以下

notifyItemRemoved(position);
notifyDataSetChanged();

4.整体

public class CollectionAdapter extends RecyclerView.Adapter<CollectionAdapter.CollectionHolder>{

    private Context mcontext;
    private CollectionAdapter.onItemClickListener mlistener;
    private ArrayList<RecommendPoem> mlist;

    public CollectionAdapter(Context context, ArrayList<RecommendPoem> list, CollectionAdapter.onItemClickListener listener){
        this.mcontext=context;
        this.mlistener=listener;
        this.mlist=list;
    }

    @NonNull
    @Override
    public CollectionHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        return new CollectionAdapter.CollectionHolder(LayoutInflater.from(mcontext).inflate(R.layout.home_page_recommend_poem_item,parent,false));
    }

    @Override
    public void onBindViewHolder(@NonNull CollectionHolder holder, int position) {
        if(mlist!=null&&mlist.size()>0){
            holder.textView1.setText(mlist.get(position).getTitle());
            holder.textView2.setText(mlist.get(position).getAuthor());
            holder.textView3.setText(mlist.get(position).getFirstSentence());
        }

        holder.linearLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mlistener.onClick(position);
            }
        });
        holder.menu.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mlistener.ontClick(position);
                notifyItemRemoved(position);
                notifyDataSetChanged();
            }
        });
    }

    @Override
    public int getItemCount() {
        return mlist.size();
    }

    public class CollectionHolder extends RecyclerView.ViewHolder {
        //@BindView(R.id.recommend_poem_title)
        private TextView textView1;
        private TextView textView2;
        private TextView textView3;
        private LinearLayout linearLayout;
        private TextView menu;
        public CollectionHolder(@NonNull View itemView) {
            super(itemView);
            linearLayout=itemView.findViewById(R.id.content);
            textView1=itemView.findViewById(R.id.recommend_poem_title);
            textView2=itemView.findViewById(R.id.recommend_poem_author);
            textView3=itemView.findViewById(R.id.recommend_poem_first_sentence);
            menu=itemView.findViewById(R.id.menu);
        }
    }

    public interface onItemClickListener{
        void onClick(int pos);
        void ontClick(int pos);
    }
}

3、Activity

//收藏展示
            RecyclerView listView = (RecyclerView) findViewById(R.id.collection_poem_listview);
            listView.setLayoutManager(new LinearLayoutManager(this));
            listView.setAdapter(new CollectionAdapter(this, collectionPoemList, new CollectionAdapter.onItemClickListener() {
                @Override
                public void onClick(int pos) {
                   //自定义条目点击事件
                }

                @Override
                public void ontClick(int pos) {
                //点击删除事件
                //设置数据库删除等    
                    collectionPoemList.remove(pos);
                    
                }
            }));
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值