package Ġcom . sam uel be ck . adapter frame . util Ċ Ċ import Ġandroid . database . Cursor Ċ import Ġandroid . widget . Filter Ċ Ċ class ĠCursor Filter Ġinternal Ġconstructor ( private Ġvar Ġm Client : ĠCursor Filter Client ) Ġ: ĠFilter () Ġ{ ĊĊĠĠĠ Ġinternal Ġinterface ĠCursor Filter Client Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcursor : ĠCursor ? ĊĠĠĠĠĠĠĠ Ġfun Ġconvert ToString ( cursor : ĠCursor ): ĠCharSequence ĊĠĠĠĠĠĠĠ Ġfun Ġrun Query On Background Thread ( constraint : ĠCharSequence ): ĠCursor ? ĊĠĠĠĠĠĠĠ Ġfun Ġchange Cursor ( cursor : ĠCursor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġconvert Result ToString ( result Value : ĠAny ): ĠCharSequence Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġm Client . convert ToString ( result Value Ġas ĠCursor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġperform Filtering ( constraint : ĠCharSequence ): ĠFilter . Filter Results Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcursor Ġ= Ġm Client . run Query On Background Thread ( constraint ) ĊĊĠĠĠĠĠĠĠ Ġval Ġresults Ġ= ĠFilter . Filter Results () ĊĠĠĠĠĠĠĠ Ġif Ġ( cursor Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresults . count Ġ= Ġcursor . count ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresults . values Ġ= Ġcursor ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresults . count Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresults . values Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresults ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpublish Results ( constraint : ĠCharSequence , Ġresults : ĠFilter . Filter Results ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġold Cursor Ġ= Ġm Client . cursor ĊĊĠĠĠĠĠĠĠ Ġif Ġ( results . values Ġ!= Ġnull Ġ&& Ġresults . values Ġ!== Ġold Cursor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Client . change Cursor ( results . values Ġas ĠCursor ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊ Ċ }