歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> 翻翻git之---利用RecyclerView實現折疊效果 SectionedExpandableGridRecyclerView

翻翻git之---利用RecyclerView實現折疊效果 SectionedExpandableGridRecyclerView

日期:2017/3/1 12:15:56   编辑:關於Linux

今天也沒有P1,因為年前醬油打多了,事情堆積到現在有點緊迫感了,快點給觀眾老爺上完聊我就去做事了!!


今天上的是一個可折疊的RecyclerView SectionedExpandableGridRecyclerView(名字好長)

先上下效果圖:

這裡寫圖片描述

因為是RecyclerView 那這些點擊、折疊都是自己寫的事件了,所以還是感謝作者!!!<喎?http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwPmhvdyB0byB1c2U/PC9wPg0KPHA+0vLOqtSt1/fV38O709DX9iBqY2VudGVyz8LU2MTHw7TO0sPHvs3Wu8TcILDRtPrC67rN18rUtM7EvP62vENvcHm9+Milwcs8L3A+DQo8cD48aW1nIGFsdD0="這裡寫圖片描述" src="http://www.2cto.com/uploadfile/Collfiles/20160229/20160229092401217.png" title="\" />

這些都弄進去

那來看看是怎麼使用的,把創建,初始化,調用這些事好好瞅瞅。

看看使用這個控件要傳些什麼

public SectionedExpandableLayoutHelper(Context context, RecyclerView recyclerView, ItemClickListener itemClickListener,int gridSpanCount)

需要傳4個參數分別為:

Context context 上下文對象

RecyclerView recyclerView 控件容器對象

ItemClickListener itemClickListener 點擊事件對象

int gridSpanCount 每行顯示多少個Item數

上面的GIF gridSpanCount傳入的是3,再貼個傳入2的給大家看看

這裡寫圖片描述

對了再說下XML的引用

 

只是當普通的RecyclerView使用就好了

那數據源怎麼操作呢?

 ArrayList arrayList = new ArrayList<>();
        arrayList.add(new Item("iPhone", 0));
        arrayList.add(new Item("iPad", 1));
        arrayList.add(new Item("iPod", 2));
        arrayList.add(new Item("iMac", 3));
        sectionedExpandableLayoutHelper.addSection("Apple Products", arrayList);

作者對數據層進行了一定封裝,使得setAdapter()的操作,並不在我們的業務層出現。

而是在控件初始化時進行了設置(不過這時候數據集合是空的)

 public SectionedExpandableLayoutHelper(Context context, RecyclerView recyclerView, ItemClickListener itemClickListener,
                                           int gridSpanCount) {

        //setting the recycler view
        GridLayoutManager gridLayoutManager = new GridLayoutManager(context, gridSpanCount);
        recyclerView.setLayoutManager(gridLayoutManager);
        mSectionedExpandableGridAdapter = new SectionedExpandableGridAdapter(context, mDataArrayList,
                gridLayoutManager, itemClickListener, this);
        recyclerView.setAdapter(mSectionedExpandableGridAdapter);
    }

然後在notifyDataSetChanged()時進行數據的刷新(無論是主動還是被動都是在這操作)

反正你如果數據發橫了變化 記得刷一刷 notifyDataSetChanged()

欄目的監聽走這

@Override
    public void itemClicked(Item item) {
        Toast.makeText(this, "Item: " + item.getName() + " clicked", Toast.LENGTH_SHORT).show();
    }

每一個Item的監聽走這

 @Override
    public void itemClicked(Section section) {
        Toast.makeText(this, "Section: " + section.getName() + " clicked", Toast.LENGTH_SHORT).show();
    }

這兩個事件的set方法都省去了,因為構造函數裡已經做了這事,當然如果你不需要,那麼久空著吧。

源碼地址:https://github.com/ddwhan0123/SectionedExpandableGridRecyclerView/archive/master.zip

Copyright © Linux教程網 All Rights Reserved