前提・実現したいこと
料理メニューのリストを表示するアプリを作成しています。
メニューデータはrealm(MainDatabase)に登録してある状態で
recycleviewの表示まではできましたがsearchviewの実装ができません。
発生している問題・エラーメッセージ
realmを利用したrecycleviewでのsearchviewの実装方法がわからず困っています。
該当のソースコード
kotlin
1class CustomRealmRecyclerViewAdapter (private val context: Context, var collection: OrderedRealmCollection<MainDataBase>?, private val autoUpdate: Boolean) 2 : RealmRecyclerViewAdapter<MainDataBase, CustomRealmRecyclerViewAdapter.CustomViewHolder>(collection, autoUpdate) { 3 4 override fun getItemCount(): Int { 5 return collection?.size ?: 0 6 } 7 8 override fun onCreateViewHolder(parent: ViewGroup, position: Int): CustomViewHolder { 9 val view = LayoutInflater.from(context).inflate(R.layout.view_cell, parent, false) 10 return CustomViewHolder(DataBindingUtil.bind(view)!!) 11 } 12 13 override fun onBindViewHolder(viewHolder: CustomViewHolder, position: Int) { 14 val Maindata = collection?.get(position) 15 viewHolder.binding.cellName.text = Maindata?.title 16 viewHolder.binding.cellAge.text = Maindata?.id.toString() 17 viewHolder.binding.cellLayout.setBackgroundColor(if (position % 2 == 0) Color.LTGRAY else Color.WHITE) 18 } 19 20 class CustomViewHolder(val binding: ViewCellBinding): RecyclerView.ViewHolder(binding.root) 21} 22
kotlin
1//ItemListFragment 2class ItemListFragment : Fragment(){ 3 private lateinit var realm:Realm 4 val realmResults = realm.where(MainDataBase::class.java).findAll() 5 6 private var mView: View? = null 7 private var recyclerView: RecyclerView? = null 8 private val items: OrderedRealmCollection<MainDataBase> = realmResults 9 private var adapter: CustomRealmRecyclerViewAdapter? = null 10 11 12 13 override fun onCreateView(inflater: LayoutInflater?, 14 container: ViewGroup?, 15 savedInstanceState: Bundle?): View { 16 super.onCreateView(LayoutInflater.from(context), container, savedInstanceState) 17 18 mView = inflater!!.inflate(R.layout.view_cell, container, false) 19 val linerLayoutManager = LinearLayoutManager(mView!!.context) 20 recyclerView = mView!!.findViewById(R.id.recyclerView) 21 recyclerView!!.layoutManager = linerLayoutManager 22 23 val dividerDecoration = DividerItemDecoration(recyclerView!!.context, linerLayoutManager.orientation) 24 recyclerView!!.addItemDecoration(dividerDecoration) 25 26 return mView!! 27 } 28 29 override fun onActivityCreated(savedInstanceState: Bundle?) { 30 super.onActivityCreated(savedInstanceState) 31 realm= Realm.getDefaultInstance() 32 adapter=CustomRealmRecyclerViewAdapter(recyclerView!!.context, items, false) 33 recyclerView!!.adapter = adapter 34 35 } 36 37 fun searchRequest(text: String) { 38 val adapter = adapter 39 if (adapter != null) { 40 adapter.collection = items.filter(text)://ここで 41 adapter.notifyDataSetChanged() 42 } 43 } 44}
試したこと
https://qiita.com/Xdaichi/items/e6234b336219120a76e4
上記のサイトを参考にソースコードを作成しましたが、Searchviewの仕様が
realmを使用したAdapterと噛み合わずコンパイルができませんでした。
ItemFlagmentのsearchRequest内でfilterのコンパイルができず配列や引数を変更してみましたが改善されませんでした。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。