欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android中RecyclerView實現(xiàn)Item添加和刪除的代碼示例

 更新時間:2017年09月05日 08:25:42   作者:可惜沒_如果  
本篇文章主要介紹了Android中RecyclerView實現(xiàn)Item添加和刪除的代碼示例,非常具有實用價值,需要的朋友可以參考下

本文介紹了Android中RecyclerView實現(xiàn)Item添加和刪除的代碼示例,分享給大家,具體如下:

先上效果圖:


RecyclerView簡介:

RecyclerView用以下兩種方式簡化了數(shù)據(jù)的展示和處理:

1. 使用LayoutManager來確定每一個item的排列方式。

2. 為增加和刪除項目提供默認的動畫效果,也可以自定義。

RecyclerView項目結(jié)構(gòu)如下:

Adapter:使用RecyclerView之前,你需要一個繼承自RecyclerView.Adapter的適配器,作用是將數(shù)據(jù)與每一個條目的界面進行綁定。

LayoutManager:用來確定每一個item如何進行排列擺放,何時展示和隱藏。

RecyclerView-Item添加:

在適配器中加入如下代碼:

  // 添加數(shù)據(jù)
  public void addData(int position) {
//   在list中添加數(shù)據(jù),并通知條目加入一條
    list.add(position, "我是商品" + position);
    //添加動畫
    notifyItemInserted(position);
  }

調(diào)用時:

 adapter.addData(list.size());

RecyclerView-Item刪除:

在適配器中加入如下代碼:

  // 刪除數(shù)據(jù)
  public void removeData(int position) {
    list.remove(position);
    //刪除動畫
    notifyItemRemoved(position);
    notifyDataSetChanged();
  }

調(diào)用時:

//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);
//   獲取數(shù)據(jù),向適配器傳數(shù)據(jù),綁定適配器
    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();
  }
  // 添加數(shù)據(jù)
  public void addData(int position) {
//   在list中添加數(shù)據(jù),并通知條目加入一條
    list.add(position, "我是商品" + position);
    //添加動畫
    notifyItemInserted(position);
  }
  // 刪除數(shù)據(jù)
  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);
    }
  }
}

源碼下載地址

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android?TextView冷門實用方法技巧

    Android?TextView冷門實用方法技巧

    這篇文章主要為大家介紹了Android?TextView冷門實用方法技巧示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • android開發(fā)基礎(chǔ)教程—SharedPreferences讀寫

    android開發(fā)基礎(chǔ)教程—SharedPreferences讀寫

    本文介紹SharedPreferences的讀與寫的實現(xiàn)思路,感興趣的朋友可以了解下
    2013-01-01
  • Android自定義view實現(xiàn)動態(tài)柱狀圖

    Android自定義view實現(xiàn)動態(tài)柱狀圖

    這篇文章主要為大家詳細介紹了Android自定義view實現(xiàn)動態(tài)柱狀圖的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • android自定義View實現(xiàn)圓環(huán)顏色選擇器

    android自定義View實現(xiàn)圓環(huán)顏色選擇器

    這篇文章主要介紹了android自定義View實現(xiàn)圓環(huán)顏色選擇器,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Android操作系統(tǒng)介紹之11種傳感器

    Android操作系統(tǒng)介紹之11種傳感器

    Android是一種基于Linux的自由及開放源代碼的操作系統(tǒng),主要使用于移動設(shè)備,如智能手機和平板電腦,Android是一種基于Linux的自由及開放源代碼的操作系統(tǒng),主要使用于移動設(shè)備,如智能手機和平板電腦,非常不錯,具有參考借鑒價值,感興趣的朋友一起學習吧
    2016-07-07
  • Android中Activity的四種啟動模式和onNewIntent()

    Android中Activity的四種啟動模式和onNewIntent()

    android 中activity的啟動模式分為四種,(standard、singleTop、singTask、singleInstance),本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友參考下吧
    2018-08-08
  • Android 點擊editview以外位置實現(xiàn)隱藏輸入法

    Android 點擊editview以外位置實現(xiàn)隱藏輸入法

    這篇文章主要介紹了Android 點擊editview以外位置實現(xiàn)隱藏輸入法的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Android編寫簡單的網(wǎng)絡(luò)爬蟲

    Android編寫簡單的網(wǎng)絡(luò)爬蟲

    網(wǎng)絡(luò)爬蟲是捜索引擎抓取系統(tǒng)的重要組成部分。爬蟲的主要目的是將互聯(lián)網(wǎng)上的網(wǎng)頁下載到本地形成一個或聯(lián)網(wǎng)內(nèi)容的鏡像備份。本文的主要內(nèi)容是講在Android中如何編寫簡單的網(wǎng)絡(luò)爬蟲。
    2016-07-07
  • android 選項卡(TabHost)如何放置在屏幕的底部

    android 選項卡(TabHost)如何放置在屏幕的底部

    如何將TAB放置在屏幕的底端,有很多的新手都想實現(xiàn)這種效果,本文搜集整理了一些,感興趣的朋友可以參考下哦
    2013-01-01
  • Android miniTwitter登錄界面開發(fā)實例

    Android miniTwitter登錄界面開發(fā)實例

    這篇文章主要為大家詳細介紹了Android miniTwitter登錄界面開發(fā)實例,感興趣的小伙伴們可以參考一下
    2016-04-04

最新評論