package Ġyet . ui . grid Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . drawable . Color Drawable Ċ import Ġandroid . view . View Ċ import Ġandroid . widget .* Ċ import Ġyet . ui . ext .* Ċ import Ġyet . ui . list . Any Adapter Ċ import Ġyet . ui . res . sized Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġent ao yang @ 1 6 3 . com Ġon Ġ 2 0 1 6 - 0 8 - 2 7 . Ċ Ġ*/ Ċ Ċ open Ġclass ĠGrid Panel ( context : ĠContext ) Ġ: ĠGrid View ( context ) Ġ{ ĊĊ ĉ var Ġon New Callback : Ġ( view : ĠGrid Item View ) Ġ-> ĠUnit Ġ= Ġ{} Ċ ĉ var Ġon Bind Callback : Ġ( view : ĠGrid Item View , Ġitem : ĠAny ) Ġ-> ĠUnit Ġ= Ġ{ Ġv , Ġitem Ġ-> Ċĉ ĉ v . set Values (" Item ", ĠColor Drawable ( Color . GREEN ). sized ( 6 0 , Ġ 6 0 )) Ċ ĉ } Ċ ĉ var Ġon Item Click Callback : Ġ( Any ) Ġ-> ĠUnit Ġ= Ġ{} ĊĊ ĉ var Ġheight Most Ġ= Ġfalse Ċ ĉ val Ġany Adapter Ġ= ĠAny Adapter () ĊĊ ĉ init Ġ{ Ċĉ ĉ gen Id () Ċĉ ĉ padding ( 1 0 ) Ċĉ ĉ num Columns Ġ= Ġ 3 Ċĉ ĉ vertical Spacing Ġ= Ġdp ( 1 0 ) ĊĊĉ ĉ any Adapter . on BindView Ġ= Ġ{ Ġv , Ġp Ġ-> Ċĉĉ ĉ this @ Grid Panel . on BindView ( v Ġas ĠGrid Item View , ĠgetItem ( p )) Ċĉ ĉ } Ċĉ ĉ any Adapter . on New View Ġ= Ġ{ Ġc , Ġp Ġ-> Ċĉĉ ĉ this @ Grid Panel . on New View ( c ) Ċĉ ĉ } ĊĊĉ ĉ this . on ItemClickListener Ġ= ĠAdapter View . On ItemClickListener Ġ{ Ġadapter View , Ġview , Ġpos , Ġid Ġ-> Ċĉĉ ĉ val Ġs Ġ= Ġadapter . getItem ( pos ) Ċĉĉ ĉ on Item Click ( s ) Ċĉ ĉ } Ċĉ ĉ super . setAdapter ( any Adapter ) Ċ ĉ } ĊĊ ĉ fun Ġset Items ( items : ĠList < Any >) Ġ{ Ċĉ ĉ any Adapter . set Items ( items ) Ċ ĉ } ĊĊ ĉ fun ĠgetItem ( pos : ĠInt ): ĠAny Ġ{ Ċĉ ĉ return Ġany Adapter . getItem ( pos ) Ċ ĉ } ĊĊ ĉ val Ġitem Count : ĠInt Ċĉ ĉ get () Ġ{ Ċĉĉ ĉ return Ġadapter . count Ċĉ ĉ } ĊĊ ĉ open Ġfun Ġon Item Click ( item : ĠAny ) Ġ{ Ċĉ ĉ on Item Click Callback ( item ) Ċ ĉ } ĊĊ ĉ open Ġfun Ġon BindView ( view : ĠGrid Item View , Ġitem : ĠAny ) Ġ{ Ċĉ ĉ on Bind Callback ( view , Ġitem ) Ċ ĉ } ĊĊ ĉ open Ġfun Ġon New View ( context : ĠContext ): ĠGrid Item View Ġ{ Ċĉ ĉ val Ġv Ġ= ĠGrid Item View ( context ) Ċĉ ĉ on New Callback ( v ) Ċĉ ĉ return Ġv Ċ ĉ } ĊĊ ĉ override Ġfun Ġon Measure ( width Measure Spec : ĠInt , Ġheight Measure Spec : ĠInt ) Ġ{ Ċĉ ĉ if Ġ(! height Most ) Ġ{ Ċĉĉ ĉ return Ġsuper . on Measure ( width Measure Spec , Ġheight Measure Spec ) Ċĉ ĉ } Ċĉ ĉ val Ġheight Spec : ĠInt Ġ= Ġif Ġ( layout Params . height Ġ== ĠAbs ListView . LayoutParams . WRAP _ CONTENT ) Ġ{ Ċĉĉ ĉ View . Measure Spec . make Measure Spec ( Integer . MAX _ VALUE Ġshr Ġ 2 , ĠView . Measure Spec . AT _ MO ST ) Ċĉ ĉ } Ġelse Ġ{ Ċĉĉ ĉ height Measure Spec Ċĉ ĉ } ĊĊĉ ĉ super . on Measure ( width Measure Spec , Ġheight Spec ) Ċ ĉ } Ċ }