最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android ExpandableRecyclerView使用方法詳解

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

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

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

效果圖:


使用步驟:加入依賴

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

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

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

1.2 分別實現(xiàn)以下兩個方法,并在對應(yīng)方法中返回對應(yīng)Layout布局文件中根節(jié)點的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é)點的ID
   */
  @Override
  public int getGroupViewResId() {
    return R.id.group;
  }

  /**
   * @return 返回你的ChildView 布局文件中根節(jié)點的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來封裝

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

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

    mDatas = new ArrayList<>();
    List<ImageBean> bean1 = new ArrayList<>();
    List<ImageBean> bean2 = new ArrayList<>();
    List<ImageBean> bean3 = new ArrayList<>();
    // 每個子列表長度可以不相同
    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一樣,來愉快的寫代碼了。

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

代碼github地址

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

相關(guān)文章

  • Android實現(xiàn)ViewPager無限循環(huán)效果(二)

    Android實現(xiàn)ViewPager無限循環(huán)效果(二)

    這篇文章主要為大家詳細介紹了Android實現(xiàn)ViewPager無限循環(huán)效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Android開發(fā)組件化架構(gòu)設(shè)計原理到實戰(zhàn)

    Android開發(fā)組件化架構(gòu)設(shè)計原理到實戰(zhàn)

    這篇文章主要為大家介紹了Android開發(fā)組件化架構(gòu)設(shè)計原理到實戰(zhàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • Android實現(xiàn)BannerLayout圖文輪播功能

    Android實現(xiàn)BannerLayout圖文輪播功能

    這篇文章主要為大家詳細介紹了Android實現(xiàn)BannerLayout圖文輪播功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Flutter進階之實現(xiàn)動畫效果(二)

    Flutter進階之實現(xiàn)動畫效果(二)

    這篇文章主要為大家詳細介紹了Flutter進階之實現(xiàn)動畫效果的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • Android 軟鍵盤出現(xiàn)不適應(yīng)的解決辦法總結(jié)

    Android 軟鍵盤出現(xiàn)不適應(yīng)的解決辦法總結(jié)

    這篇文章主要介紹了Android 軟鍵盤出現(xiàn)不適應(yīng)的解決辦法總結(jié)的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • Android仿簡書長按文章生成圖片效果

    Android仿簡書長按文章生成圖片效果

    使用簡書APP的同學都知道,簡書有這樣一個功能;文章頁長按內(nèi)容時底部會出現(xiàn)一個 生成圖片分享 的按鈕,點擊之后就可以將當前的文章生成一張長圖片;這張圖片可以保存到本地或分享給好友,同時還可為圖片設(shè)置成為白和黑兩種風格,很有藝術(shù)范
    2017-03-03
  • Android SharedPreference存儲文件三步走

    Android SharedPreference存儲文件三步走

    SharedPreferences是安卓平臺上一個輕量級的存儲類,用來保存應(yīng)用的一些常用配置,比如Activity狀態(tài),Activity暫停時,將此activity的狀態(tài)保存到SharedPereferences中;當Activity重載,系統(tǒng)回調(diào)方法onSaveInstanceState時,再從SharedPreferences中將值取出
    2023-01-01
  • 使用Flutter實現(xiàn)一個走馬燈布局的示例代碼

    使用Flutter實現(xiàn)一個走馬燈布局的示例代碼

    這篇文章主要介紹了使用 Flutter 實現(xiàn)一個走馬燈布局的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • Android的ImageButton當顯示Drawable圖片時就不顯示文字

    Android的ImageButton當顯示Drawable圖片時就不顯示文字

    Android提供的ImageButton當顯示Drawable圖片時就不會再顯示文字了,下面與大家分享下3種解決方法,不會的朋友可以了解下哈
    2013-06-06
  • 微信Android熱更新Tinker使用詳解(星空武哥)

    微信Android熱更新Tinker使用詳解(星空武哥)

    Tinker是微信官方的Android熱補丁解決方案,它支持動態(tài)下發(fā)代碼、So庫以及資源,讓應(yīng)用能夠在不需要重新安裝的情況下實現(xiàn)更新。當然,你也可以使用Tinker來更新你的插件
    2017-09-09

最新評論

合川市| 马山县| 洛隆县| 山阳县| 沾化县| 区。| 宝应县| 尤溪县| 大石桥市| 襄城县| 昭平县| 白朗县| 大英县| 泗洪县| SHOW| 桑植县| 桐城市| 科尔| 保山市| 瑞金市| 西吉县| 马龙县| 咸丰县| 高密市| 正蓝旗| 韶关市| 剑川县| 双桥区| 洪湖市| 孟村| 田林县| 乐都县| 东明县| 长沙市| 革吉县| 沙田区| 赤城县| 开原市| 洪洞县| 呼和浩特市| 卢龙县|