Android GridLayoutManager 某些item 獨站一行

來源:互聯網
上載者:User

標籤:div   scroll   position   you   直接   缺陷   osi   就是   AC   

遇到複雜的不規則列(即有的行顯示的列數多,有的行顯示的列數少,並且每列顯示的內容頁不一樣)對於這種需求在recyclerview出來之前的解決方案,要麼就是listview中嵌套girdview,要麼就直接使用scrollview,勉強可以實現此效果,但是這兩種實現都有非常大的缺陷--都不能進行item的複用。

有了recyclerview之後這種需求就迎刃而解了,並且實現這種效果利用recyclerview可以更好的實現MVC的思想,甚至可以根據資料模型動態更改recyclerview的顯示樣式。真正做到資料控制顯示的樣式,並且可以做到item的迴圈利用。

可以使用gridlayoutmanager結合GridLayoutManager.SpanSizeLookup的相關功能實現,建立GridLayoutManager的時候列數填寫所有可能列數的最小公倍數。再結合adapter中的:

@Override  public int getItemViewType(int position) {        return position == 0 ? 0 : type;    }  

即可實現。實現的關鍵代碼如下:

GridLayoutManager layoutManager = new GridLayoutManager(getActivity(), 2);                layoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {                    @Override                    public int getSpanSize(int position) {                        return position == 0 ? 2 : 1;                    }                });  ecyclerView.setLayoutManager(layoutManager);  

關鍵代碼就在上面了,

layoutManager.setSpanSizeLookup  

此句代碼是設定對應position位置的item的跨列數,比如第一行顯示一列,其他行顯示兩列的代碼實現如下:

layoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {              @Override              public int getSpanSize(int position) {                  return position == 0 ? 2 : 1;              }          });  

 

Android GridLayoutManager 某些item 獨站一行

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.