单击 Android 中的单选按钮时防止重新加载数据
Prevent reloading of data when clicking Radio Button in Android
在我的应用程序中,顶部栏包含 2 个单选按钮(提要、最近)的单选按钮组。
在此之下,我有 recyclerview(rv) 显示来自 API.
的数据
如果我单击提要按钮,rv 会加载来自 API 的提要数据,如果我单击最近按钮,rv 会加载来自 API.
的最新数据
现在,如果我在 Feed 部分向下滚动并转到最近,然后向下滚动到最近部分并返回到 Feed 部分,它会重新加载数据并且最后滚动的索引会丢失。
如何防止这种情况发生并在我切换到最近的部分之前显示完全相同的提要数据?
HomeFragment 代码:
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
// Inflate the layout for this fragment
view_root = inflater.inflate(R.layout.fragment_home, container, false)
init()
mcontext = this.requireActivity()
prefHandler = PrefHandler(mcontext)
feedRecentRadioGroup.check(feedRecentRadioGroup.getChildAt(0).id)
setFeedData()
feedRecentRadioGroup.setOnCheckedChangeListener { group, checkedId ->
when (checkedId) {
R.id.feedRadioBtn -> {
setFeedData()
}
R.id.recentRadioBtn -> {
setRecentData()
}
}
}
...
setFeedData() 和 setRecentData() -> 在此函数内,进行单独的 API 调用并将数据加载到 recyclerview -> 两个部分都工作正常。
Homefragment 的布局
我建议你使用TabLayout
来解决这个问题。
https://developer.android.com/reference/com/google/android/material/tabs/TabLayout
在我的应用程序中,顶部栏包含 2 个单选按钮(提要、最近)的单选按钮组。 在此之下,我有 recyclerview(rv) 显示来自 API.
的数据如果我单击提要按钮,rv 会加载来自 API 的提要数据,如果我单击最近按钮,rv 会加载来自 API.
的最新数据现在,如果我在 Feed 部分向下滚动并转到最近,然后向下滚动到最近部分并返回到 Feed 部分,它会重新加载数据并且最后滚动的索引会丢失。
如何防止这种情况发生并在我切换到最近的部分之前显示完全相同的提要数据?
HomeFragment 代码:
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
// Inflate the layout for this fragment
view_root = inflater.inflate(R.layout.fragment_home, container, false)
init()
mcontext = this.requireActivity()
prefHandler = PrefHandler(mcontext)
feedRecentRadioGroup.check(feedRecentRadioGroup.getChildAt(0).id)
setFeedData()
feedRecentRadioGroup.setOnCheckedChangeListener { group, checkedId ->
when (checkedId) {
R.id.feedRadioBtn -> {
setFeedData()
}
R.id.recentRadioBtn -> {
setRecentData()
}
}
}
...
setFeedData() 和 setRecentData() -> 在此函数内,进行单独的 API 调用并将数据加载到 recyclerview -> 两个部分都工作正常。
Homefragment 的布局
我建议你使用TabLayout
来解决这个问题。
https://developer.android.com/reference/com/google/android/material/tabs/TabLayout