【发布时间】:2020-12-23 15:40:13
【问题描述】:
我是 android 和房间的新手,我需要从房间数据库中获取按日期过滤的数据并在回收站视图中将其可视化
这是我的数据类:
@Parcelize
@Entity(tableName = "user_wod_table")
data class UserWod(
@PrimaryKey(autoGenerate = true)
val id: Int,
val name: String,
val type: String,
val description: String,
val date:String
) : Parcelable
我在片段中有一个日历视图
private lateinit var calendarView: CalendarView
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val view = inflater.inflate(R.layout.fragment_calendar, container, false)
calendarView = view.findViewById(R.id.calendarView)
val pm = requireContext().packageManager
val appInfo = pm.getApplicationInfo("it.alberto.wodapp", 0)
val appFile = appInfo.sourceDir
val installed: Long = File(appFile).lastModified()
//calendarView.setMinimumDate()
val events: MutableList<EventDay> = ArrayList()
calendarView.setOnDayClickListener(object : OnDayClickListener {
override fun onDayClick(eventDay: EventDay) {
val clickedDayCalendar: Calendar = eventDay.calendar
events.add(EventDay(clickedDayCalendar, R.drawable.ic_dumbbell))
calendarView.setEvents(events)
//var my_date_format: SimpleDateFormat = SimpleDateFormat("yyyyMMdd", Locale.getDefault())
//var my_date: SimpleDateFormat = SimpleDateFormat("dd/MM/yyyy", Locale.getDefault())
val date = "" + clickedDayCalendar.get(Calendar.DAY_OF_MONTH) + "/" + clickedDayCalendar.get(Calendar.MONTH) + "/" + clickedDayCalendar.get(Calendar.YEAR)
Toast.makeText(activity, "" + clickedDayCalendar.get(Calendar.DAY_OF_MONTH) + "/" + clickedDayCalendar.get(Calendar.MONTH) + "/" + clickedDayCalendar.get(Calendar.YEAR),
Toast.LENGTH_LONG).show()
findNavController().navigate(R.id.action_calendarFragment_to_listUserWodFragment)
}
})
return view
}
当我点击一天时,使用回收器视图启动第二个片段
@InternalCoroutinesApi
private lateinit var mUserWodViewModel: UserWodViewModel
@InternalCoroutinesApi
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val view = inflater.inflate(R.layout.fragment_list_user_wod, container, false)
val adapter = UserListAdapter()
val recyclerView = view.recyclerView
recyclerView.adapter = adapter
recyclerView.layoutManager = LinearLayoutManager(requireContext())
mUserWodViewModel = ViewModelProvider(this).get(UserWodViewModel::class.java)
mUserWodViewModel.readAllData.observe(viewLifecycleOwner, { userWod ->
adapter.setData(userWod)
})
view.floatingActionButton.setOnClickListener{
findNavController().navigate(R.id.action_listUserWodFragment_to_updateUserWodFragment)
}
// Add menu
setHasOptionsMenu(true)
return view
}
现在我在没有过滤器的情况下可视化所有 UserWod,但我只想要所选日期中的 UserWod。
感谢您的帮助
【问题讨论】:
标签: android kotlin android-recyclerview android-room