全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android中RecyclerView实现Item添加和删除的代码示例

本文介绍了Android中RecyclerView实现Item添加和删除的代码示例,分享给大家,具体如下:

先上效果图:


RecyclerView简介:

RecyclerView用以下两种方式简化了数据的展示和处理:

1. 使用LayoutManager来确定每一个item的排列方式。

2. 为增加和删除项目提供默认的动画效果,也可以自定义。

RecyclerView项目结构如下:

Adapter:使用RecyclerView之前,你需要一个继承自RecyclerView.Adapter的适配器,作用是将数据与每一个条目的界面进行绑定。

LayoutManager:用来确定每一个item如何进行排列摆放,何时展示和隐藏。

RecyclerView-Item添加:

在适配器中加入如下代码:

  // 添加数据
  public void addData(int position) {
//   在list中添加数据,并通知条目加入一条
    list.add(position, "我是商品" + position);
    //添加动画
    notifyItemInserted(position);
  }

调用时:

 adapter.addData(list.size());

RecyclerView-Item删除:

在适配器中加入如下代码:

  // 删除数据
  public void removeData(int position) {
    list.remove(position);
    //删除动画
    notifyItemRemoved(position);
    notifyDataSetChanged();
  }

调用时:

//Item里的删除
   removeData(position);
//外面的控件的删除
adapter. removeData(position);

需要注意的是我再删除动画的下面加了notifyDataSetChanged();代码,因为我们在删除条目时不一定是按照顺序删除的,也许是错位删除,这样会因为position的原因造成角标越界异常,所以需要整体刷新一下。

整体代码:

**1.MainActivity **

package com.android.qzs.qzsrecycleview;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.ImageView;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
  private RecyclerView mRecyclerView;
  private ImageView iv_add;
  private RecycleAdapter adapter;
  private List<String> list = new ArrayList<String>();
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    initView();
    initRecycle();
    iv_add.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        //       添加自带默认动画
          adapter.addData(list.size());
    }
    });
  }
  private void initRecycle() {
    // 纵向滑动
    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
    mRecyclerView.setLayoutManager(linearLayoutManager);
//   获取数据,向适配器传数据,绑定适配器
    list = initData();
    adapter = new RecycleAdapter(MainActivity.this, list);
    mRecyclerView.setAdapter(adapter);
//   添加动画
    mRecyclerView.setItemAnimator(new DefaultItemAnimator());
  }
  private void initView() {
    iv_add = (ImageView) findViewById(R.id.iv_add);
    mRecyclerView = (RecyclerView) findViewById(R.id.recyclerview);
  }
  
  protected ArrayList<String> initData() {
    ArrayList<String> mDatas = new ArrayList<String>();
    for (int i = 0; i < 1; i++) {
      mDatas.add("我是商品" + i);
    }
    return mDatas;
  }
}

2.RecycleAdapter

package com.android.qzs.qzsrecycleview;
import android.content.Context;
import android.support.design.widget.Snackbar;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
/**
 * Created by qzs on 2017/9/04.
 */
class RecycleAdapter extends RecyclerView.Adapter<RecycleAdapter.MyViewHolder> {
  private Context context;
  private List<String> list;
  public RecycleAdapter(Context context, List<String> list) {
    this.context = context;
    this.list = list;
  }
  @Override
  public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    MyViewHolder holder = new MyViewHolder(LayoutInflater.from(
        context).inflate(R.layout.item_home, parent,
        false));
    return holder;
  }
  @Override
  public void onBindViewHolder(MyViewHolder holder, final int position) {
    holder.tv.setText(list.get(position));
    holder.tv_delete.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        if (list.size() == 1) {
          Snackbar.make(v, "此条目不能删除", Snackbar.LENGTH_SHORT).show();
        } else {
          //        删除自带默认动画
          removeData(position);
        }
      }
    });
  }
  @Override
  public int getItemCount() {
    return list.size();
  }
  // 添加数据
  public void addData(int position) {
//   在list中添加数据,并通知条目加入一条
    list.add(position, "我是商品" + position);
    //添加动画
    notifyItemInserted(position);
  }
  // 删除数据
  public void removeData(int position) {
    list.remove(position);
    //删除动画
    notifyItemRemoved(position);
    notifyDataSetChanged();
  }
  /**
   * ViewHolder的类,用于缓存控件
   */
  class MyViewHolder extends RecyclerView.ViewHolder {
    TextView tv, tv_delete;
    //因为删除有可能会删除中间条目,然后会造成角标越界,所以必须整体刷新一下!
    public MyViewHolder(View view) {
      super(view);
      tv = (TextView) view.findViewById(R.id.id_num);
      tv_delete = (TextView) view.findViewById(R.id.tv_delete);
    }
  }
}

源码下载地址

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Android  # 实现Item添加和删除  # Item添加和删除  # Android RecyclerView滑动删除和拖动排序  # Android RecyclerView item选中放大被遮挡问题详解  # Android RecyclerView实现多种item布局的方法  # Android使用CardView作为RecyclerView的Item并实现拖拽和左滑删除  # Android中RecyclerView的item宽高问题详解  # Android RecyclerView显示Item布局不一致解决办法  # Android RecyclerView的Item点击事件实现整理  # Android 中RecyclerView多种item布局的写法(头布局+脚布局)  # Android RecyclerView自由拖动item的实现代码  # 我是  # 自带  # 绑定  # 的是  # 下载地址  # 两种  # 给大家  # 我再  # 自定义  # 需要注意  # 大家多多  # 然后会  # 简化了  # notifyItemRemoved  # qzs  # qzsrecycleview  # remove 


相关文章: 网站制作公司排行榜,抖音怎样做个人官方网站  长沙企业网站制作哪家好,长沙水业集团官方网站?  整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  如何用y主机助手快速搭建网站?  如何用低价快速搭建高质量网站?  Python文件管理规范_工程实践说明【指导】  三星网站视频制作教程下载,三星w23网页如何全屏?  如何通过云梦建站系统实现SEO快速优化?  百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?  ,石家庄四十八中学官网?  ui设计制作网站有哪些,手机UI设计网址吗?  黑客如何利用漏洞与弱口令入侵网站服务器?  如何在服务器上三步完成建站并提升流量?  香港网站服务器数量如何影响SEO优化效果?  建站之星代理如何获取技术支持?  网站制作需要会哪些技术,建立一个网站要花费多少?  电脑免费海报制作网站推荐,招聘海报哪个网站多?  沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?  岳西云建站教程与模板下载_一站式快速建站系统操作指南  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  如何用PHP快速搭建CMS系统?  如何快速搭建响应式可视化网站?  如何选择高效稳定的ISP建站解决方案?  网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  建站之星代理平台如何选择最佳方案?  定制建站哪家更专业可靠?推荐榜单揭晓  网站制作知乎推荐,想做自己的网站用什么工具比较好?  青岛网站设计制作公司,查询青岛招聘信息的网站有哪些?  如何正确下载安装西数主机建站助手?  安云自助建站系统如何快速提升SEO排名?  如何用PHP工具快速搭建高效网站?  移民网站制作流程,怎么看加拿大移民官网?  建站之星2.7模板快速切换与批量管理功能操作指南  ,在苏州找工作,上哪个网站比较好?  头像制作网站在线制作软件,dw网页背景图像怎么设置?  制作国外网站的软件,国外有哪些比较优质的网站推荐?  制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?  网站设计制作公司地址,网站建设比较好的公司都有哪些?  手机网站制作与建设方案,手机网站如何建设?  ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?  已有域名和空间如何快速搭建网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。