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

Android ExpandableRecyclerView使用方法詳解

 更新時(shí)間:2017年08月09日 16:30:57   作者:drawthink  
這篇文章主要為大家詳細(xì)介紹了Android ExpandableRecyclerView的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

 本文為大家分享了Android ExpandableRecyclerView的使用,供大家參考,具體內(nèi)容如下

1.目前只支持兩級(jí)結(jié)構(gòu)。
2.支持所有組同時(shí)全部展開,支持同一時(shí)間只能展開一組。
3.GroupView,ChildView高度自定義。
4.支持初始化數(shù)據(jù)時(shí),指定展開某組數(shù)據(jù)。
5.支持GroupItem,ChildItem的Onlick,OnLongClick事件。
6.展開收起帶動(dòng)畫。

效果圖:


使用步驟:加入依賴

compile 'com.drawthink:expandable-recyclerview:0.0.3'

1.繼承BaseViewHolder,實(shí)現(xiàn)自己的ViewHolder

1.1 在構(gòu)造函數(shù)中初始化你的View(包括GroupView,和childView).

1.2 分別實(shí)現(xiàn)以下兩個(gè)方法,并在對(duì)應(yīng)方法中返回對(duì)應(yīng)Layout布局文件中根節(jié)點(diǎn)的ID。

public int getGroupViewResId()

public int getChildViewResId()

示例代碼:

public class ImageViewHolder extends BaseViewHolder {

  public ImageView image;
  public TextView tvTitle;

  /**
   * 初始化你的View(這里包括GroupView,和childView)
   */
  public ImageViewHolder(Context ctx, View itemView, int viewType) {
    super(ctx,itemView, viewType);
    image = (ImageView) itemView.findViewById(R.id.iv_image);
    tvTitle = (TextView)itemView.findViewById(R.id.tv_title);
  }

  /**
   * @return 返回你的GroupView 布局文件中根節(jié)點(diǎn)的ID
   */
  @Override
  public int getGroupViewResId() {
    return R.id.group;
  }

  /**
   * @return 返回你的ChildView 布局文件中根節(jié)點(diǎn)的ID
   */
  @Override
  public int getChildViewResId() {
    return R.id.child;
  }

}

2.繼承BaseRecyclerViewAdapter
/**
 * author:Drawthink
 * describe:
 * date: 2017/5/22
 * T :group data
 * S :child data
 * VH :ViewHolder
 */

public abstract class BaseRecyclerViewAdapter<T,S,VH extends BaseViewHolder> extends RecyclerView.Adapter<VH>

示例Adapter代碼:

public class ImageAdapter extends BaseRecyclerViewAdapter<String,ImageBean,ImageViewHolder> {

  private Context ctx;
  private List datas;
  private LayoutInflater mInflater;

  public ImageAdapter(Context ctx, List<RecyclerViewData> datas) {
    super(ctx, datas);
    mInflater = LayoutInflater.from(ctx);
    this.ctx = ctx;
    this.datas = datas;
  }

  @Override
  public void onBindGroupHolder(ImageViewHolder holder, int groupPos,int position, String groupData) {
    holder.tvTitle.setText(groupData);
  }

  @Override
  public void onBindChildpHolder(ImageViewHolder holder, int groupPos,int childPos,int position, ImageBean childData) {
    holder.image.setBackgroundResource(childData.getResId());
  }

  @Override
  public View getGroupView(ViewGroup parent) {
    return mInflater.inflate(R.layout.title_item_layout,parent,false);
  }

  @Override
  public View getChildView(ViewGroup parent) {
    return mInflater.inflate(R.layout.item_image_layout,parent,false);
  }

  @Override
  public ImageViewHolder createRealViewHolder(Context ctx, View view, int viewType) {
    return new ImageViewHolder(ctx,view,viewType);
  }
}

完成以上兩步之后,基本大工告成,由于ExpandableRecyclerView的數(shù)據(jù)是要分組的,所以提供了RecyclerViewData來(lái)封裝

/**
   * @param groupData
   * @param childDatas
   * @param isExpand  初始化展示數(shù)據(jù)時(shí),該組數(shù)據(jù)是否展開
   */
public RecyclerViewData(T groupData, List<S> childDatas,boolean isExpand)

那接下來(lái)看下數(shù)據(jù)具體是怎樣封裝的。

    mDatas = new ArrayList<>();
    List<ImageBean> bean1 = new ArrayList<>();
    List<ImageBean> bean2 = new ArrayList<>();
    List<ImageBean> bean3 = new ArrayList<>();
    // 每個(gè)子列表長(zhǎng)度可以不相同
    bean1.add(new ImageBean("Dog", R.mipmap.dog));
    bean1.add(new ImageBean("Dog", R.mipmap.dog));
    bean2.add(new ImageBean("Cat", R.mipmap.cat));
    bean3.add(new ImageBean("Bird", R.mipmap.bird));

    mDatas.add(new RecyclerViewData("Dog", bean1, true));
    mDatas.add(new RecyclerViewData("Cat", bean2, true));
    mDatas.add(new RecyclerViewData("Bird", bean3, true));

所有工作以完成,現(xiàn)在你可以象平常使用Adapter,RecyclerView一樣,來(lái)愉快的寫代碼了。

注意:在對(duì)元數(shù)據(jù)mDatas進(jìn)行增刪操作時(shí),要調(diào)用adapter.notifyRecyclerViewData();否則會(huì)造成數(shù)據(jù)索引錯(cuò)亂的問(wèn)題。

代碼github地址

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android中判斷網(wǎng)絡(luò)是否可用的代碼分享

    Android中判斷網(wǎng)絡(luò)是否可用的代碼分享

    這篇文章主要介紹了Android中判斷網(wǎng)絡(luò)是否可用的代碼分享,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2015-03-03
  • 安卓11適配攻略搶先看

    安卓11適配攻略搶先看

    這篇文章主要介紹了安卓11適配攻略搶先看,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • Android 安全加密:非對(duì)稱加密詳解

    Android 安全加密:非對(duì)稱加密詳解

    本文主要介紹Android 安全加密,非對(duì)稱加密的知識(shí),這里整理了詳細(xì)的資料,及使用方法,有需要的小伙伴可以參考下
    2016-09-09
  • Android中多個(gè)EditText輸入效果的解決方式

    Android中多個(gè)EditText輸入效果的解決方式

    這篇文章主要給大家介紹了關(guān)于Android中多個(gè)EditText輸入效果的解決方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • 最簡(jiǎn)單的SD卡文件遍歷Android程序

    最簡(jiǎn)單的SD卡文件遍歷Android程序

    這篇文章主要為大家詳細(xì)介紹了最簡(jiǎn)單的SD卡文件遍歷Android程序,感興趣的小伙伴們可以參考一下
    2016-07-07
  • Android實(shí)現(xiàn)加載時(shí)提示“正在加載,請(qǐng)稍后”的方法

    Android實(shí)現(xiàn)加載時(shí)提示“正在加載,請(qǐng)稍后”的方法

    在現(xiàn)在的很多應(yīng)用中,當(dāng)在加載的時(shí)候,如果頁(yè)面動(dòng)態(tài)數(shù)據(jù)較多,會(huì)有很長(zhǎng)一段時(shí)間的空白頁(yè)面,如果加上這個(gè)頁(yè)面正在加載的提示,使得應(yīng)用更加人性化。這篇文章就給大家分享了在 Android實(shí)現(xiàn)加載時(shí)提示“正在加載,請(qǐng)稍后”的方法,有需要的朋友們可以參考借鑒。
    2016-10-10
  • Android自定義控件RatingBar調(diào)整字體大小

    Android自定義控件RatingBar調(diào)整字體大小

    這篇文章主要為大家詳細(xì)介紹了Android自定義控件RatingBar調(diào)整字體大小的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • 使用Fragment+ViewPager實(shí)現(xiàn)底部導(dǎo)航欄

    使用Fragment+ViewPager實(shí)現(xiàn)底部導(dǎo)航欄

    這篇文章主要為大家詳細(xì)介紹了使用Fragment+ViewPager實(shí)現(xiàn)底部導(dǎo)航欄,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • android應(yīng)用簽名詳細(xì)步驟

    android應(yīng)用簽名詳細(xì)步驟

    這篇文章主要介紹了android應(yīng)用簽名詳細(xì)步驟,需要的朋友可以參考下
    2014-02-02
  • 百度語(yǔ)音識(shí)別(Baidu Voice) Android studio版本詳解

    百度語(yǔ)音識(shí)別(Baidu Voice) Android studio版本詳解

    這篇文章主要介紹了百度語(yǔ)音識(shí)別(Baidu Voice) Android studio版本詳解的相關(guān)資料,需要的朋友可以參考下
    2016-09-09

最新評(píng)論