package Ġcom . wan android . ui . search history Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . input method . Input Method Manager Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġcom . wan android . App Ċ import Ġcom . wan android . BR Ċ import Ġcom . wan android . R Ċ import Ġcom . wan android . adapter . Base Bind Adapter Ċ import Ġcom . wan android . base . Base VM Fragment Ċ import Ġcom . wan android . databinding . Fragment Search History Binding Ċ import Ġcom . wan android . model . result bean . Pop ular Search Ċ import Ġcom . wan android . ui . search . Search Activity Ċ import Ġkotlinx . android . synt hetic . main . fragment _ search .* Ċ import Ġkotlinx . android . synt hetic . main . fragment _ search _ history .* Ċ import Ġorg . k oin . android x . view model . ext . android . viewModel ĊĊ Ċ /** Ċ Ġ* ĠCreated Ġby ĠDon key Ċ Ġ* Ġon Ġ 2 0 2 0 / 9 / 1 2 Ċ Ġ*/ Ċ class ĠSearch History Fragment Ġ: Base VM Fragment < Fragment Search History Binding >( R . layout . fragment _ search _ history ){ ĊĠĠĠ Ġprivate Ġval Ġsearch History ViewModel Ġby ĠviewModel < Search History ViewModel >() ĊĠĠĠ Ġprivate Ġval Ġpopular Search Item Adapter Ġby Ġlazy Ġ{ ĠBase Bind Adapter < Pop ular Search >( R . layout . item _ popular _ search , ĠBR . popular Search ) Ġ} ĊĠĠĠ Ġoverride Ġfun Ġinit View () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter = popular Search Item Adapter ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpopular Search Item Adapter . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset On ItemClickListener Ġ{ Ġ_, Ġ_, Ġposition Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch ( popular Search Item Adapter . data [ position ]. name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ// TODO Ġbug æ³¨æĦı çĤ¹ ĊĠĠĠĠ Ġ// å½ĵ æĪĳä»¬ ç¡®å®ļ Item çļĦ æĶ¹åıĺ ä¸įä¼ļ å½±åĵį RecyclerView çļĦ å®½ é«ĺ çļĦæĹ¶åĢĻ åı¯ä»¥ è®¾ç½® set Has Fixed Size ( true )ï¼Į å¹¶ éĢļè¿ĩ Adapter çļĦ å¢ŀ åĪł æĶ¹ æıĴ æĸ¹æ³ķ åİ» åĪ·æĸ° RecyclerView ï¼Į èĢĮä¸įæĺ¯ éĢļè¿ĩ notify DataSet Changed () ãĢĤ ï¼Ī åħ¶å®ŀ åı¯ä»¥ çĽ´æİ¥ è®¾ç½®ä¸º true ï¼Į å½ĵ éľĢè¦ģ æĶ¹åıĺ å®½ é«ĺ çļĦæĹ¶åĢĻ å°± çĶ¨ notify DataSet Changed () åİ» æķ´ ä½ĵ åĪ·æĸ° ä¸Ģä¸ĭ ï¼ī ĊĠĠĠĠ Ġ// rv _ hot . set Has Fixed Size ( true ) Ġ Ġå½ĵ é»ĺè®¤ éĶ® çĽĺ å¼¹ èµ· æĹ¶ RecyclerView ä¼ļ ä¸į åĪ·æĸ° ç»ı æ£ĢæŁ¥ æĺ¯ åĽłä¸º set Has Fixed Size ( true ) çļĦ åİŁåĽł ĊĠĠĠĠĠĠĠ Ġrv _ hot . layout Manager Ġ= ĠGrid LayoutManager ( App . getContext (), Ġ 3 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġsearch History ViewModel . get Pop ular Search () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstart Ob serve () Ġ{ ĊĠĠĠĠĠĠĠ Ġsearch History ViewModel . popular Search List . observe ( view Lifecycle Owner , ĠObserver Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpopular Search Item Adapter . run { ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Data ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġsearch ( key : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( activity Ġis ĠSearch Activity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactivity : ĠSearch Activity ? Ġ= Ġactivity Ġas ĠSearch Activity ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. search Result ( key ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }