Search code examples
androidgridviewandroid-recyclerviewandroid-cardviewcardview

Different card size


How can I make it so that in the recycleView there are differents size cards? (1x1, 1x2 and 2x1 where 1 is the card length) enter image description here


Solution

  • You can use GridLayoutManager with different span count.
    Here is some example.

    In activity:

    //Initialize recyclerView and adapter before
    GridLayoutManager layoutManager = new GridLayoutManager(this, 2);
    recyclerView.setLayoutManager(layoutManager);
    recyclerView.setAdapter(adapter);
    
    layoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
                @Override
                public int getSpanSize(int position) {
                        if (adapter.isHeader(position)) {
                            //Returns span count 2 if method isHeader() returns true. 
                            //You can use your own logic here.
                            return  mLayoutManager.getSpanCount()
                        } else {
                             return 1;
                        }
                    }
                }
            });
    

    And add this method to your adapter class:

    public boolean isHeader(int position) {
            return position == 0;//you can use some other logic in here
        }