Android Kotlin:在 Fragment 中创建 RecyclerView
Android Kotlin: Creating RecyclerView in Fragment
我是 Android 开发的新手,我一直坚持在片段中创建 RecyclerView。
我创建了 2 个适配器(AdapterAll.kt 用于 Tablayout 下的多个片段,MainAdapter.kt 用于我想在其上创建 recyclerview 的片段)但无法调用 MainAdapter.kt。
MainActivity.kt 调用 AdapterAll.kt 但不调用 MainAdapter.kt。
我相信这就是为什么我可以用片段创建 Tablayout 但不能在片段上创建 Recyclerview。
非常感谢!
代码如下:
MainActivity.kt
import controller.AdapterAll
import controller.MainAdapter
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
viewPager.adapter = AdapterAll(supportFragmentManager)
tabLayoutId.setupWithViewPager(viewPager)
tabLayoutId.setTabTextColors(Color.GRAY, Color.parseColor("white"))
recyclerView_main.layoutManager = LinearLayoutManager(this)
recyclerView_main.adapter = MainAdapter()
}
}
AdapterAll.kt
class AdapterAll(fragmentManager: FragmentManager):
FragmentPagerAdapter(fragmentManager) {
override fun getItem(position: Int): Fragment {
when (position) {
0 -> return Function1()
1 -> return Function2()
2 -> return Function3()
3 -> return Function4()
4 -> return Function5()
5 -> return Function6()
6 -> return Function7()
}
return Function1()
}
override fun getCount(): Int {
return 7
}
override fun getPageTitle(position: Int): CharSequence? {
when (position) {
0 -> return "Function 1"
1 -> return "Function 2"
2 -> return "Function 3"
3 -> return "Function 4"
4 -> return "Function 5"
5 -> return "Function 6"
6 -> return "Function 7"
}
return null
}
}
MainAdapter.kt
class MainAdapter: RecyclerView.Adapter<CustomViewHolder>() {
override fun getItemCount(): Int {
return 10
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CustomViewHolder {
val layoutInflater = LayoutInflater.from(parent.context)
val cellForRow = layoutInflater.inflate(R.layout.fragment_function1, parent, false)
return CustomViewHolder(cellForRow)
}
override fun onBindViewHolder(holder: CustomViewHolder, position: Int) {
holder.view.textView_video_title.text = "123"
}
}
class CustomViewHolder(val view: View): RecyclerView.ViewHolder(view) {
}
你的适配器没问题。如果我没看错的话,你想要在你的 Fragments 中有一个 recyclerView,但为什么你要在你的 Activity 中创建一个 recyclerView。在你的片段中创建一个 recyclerView 并在 recyclerView 中设置 MainAdapter.kt。
class FragmentOne : Fragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val view = inflater.inflate(R.layout.fragment_blank, container, false)
view.recyclerView.layoutManager = LinearLayoutManager(activity)
view.recyclerView.adapter = MainAdapter()
return view
}}
我是 Android 开发的新手,我一直坚持在片段中创建 RecyclerView。
我创建了 2 个适配器(AdapterAll.kt 用于 Tablayout 下的多个片段,MainAdapter.kt 用于我想在其上创建 recyclerview 的片段)但无法调用 MainAdapter.kt。 MainActivity.kt 调用 AdapterAll.kt 但不调用 MainAdapter.kt。 我相信这就是为什么我可以用片段创建 Tablayout 但不能在片段上创建 Recyclerview。
非常感谢!
代码如下:
MainActivity.kt
import controller.AdapterAll
import controller.MainAdapter
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
viewPager.adapter = AdapterAll(supportFragmentManager)
tabLayoutId.setupWithViewPager(viewPager)
tabLayoutId.setTabTextColors(Color.GRAY, Color.parseColor("white"))
recyclerView_main.layoutManager = LinearLayoutManager(this)
recyclerView_main.adapter = MainAdapter()
}
}
AdapterAll.kt
class AdapterAll(fragmentManager: FragmentManager):
FragmentPagerAdapter(fragmentManager) {
override fun getItem(position: Int): Fragment {
when (position) {
0 -> return Function1()
1 -> return Function2()
2 -> return Function3()
3 -> return Function4()
4 -> return Function5()
5 -> return Function6()
6 -> return Function7()
}
return Function1()
}
override fun getCount(): Int {
return 7
}
override fun getPageTitle(position: Int): CharSequence? {
when (position) {
0 -> return "Function 1"
1 -> return "Function 2"
2 -> return "Function 3"
3 -> return "Function 4"
4 -> return "Function 5"
5 -> return "Function 6"
6 -> return "Function 7"
}
return null
}
}
MainAdapter.kt
class MainAdapter: RecyclerView.Adapter<CustomViewHolder>() {
override fun getItemCount(): Int {
return 10
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CustomViewHolder {
val layoutInflater = LayoutInflater.from(parent.context)
val cellForRow = layoutInflater.inflate(R.layout.fragment_function1, parent, false)
return CustomViewHolder(cellForRow)
}
override fun onBindViewHolder(holder: CustomViewHolder, position: Int) {
holder.view.textView_video_title.text = "123"
}
}
class CustomViewHolder(val view: View): RecyclerView.ViewHolder(view) {
}
你的适配器没问题。如果我没看错的话,你想要在你的 Fragments 中有一个 recyclerView,但为什么你要在你的 Activity 中创建一个 recyclerView。在你的片段中创建一个 recyclerView 并在 recyclerView 中设置 MainAdapter.kt。
class FragmentOne : Fragment() {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val view = inflater.inflate(R.layout.fragment_blank, container, false)
view.recyclerView.layoutManager = LinearLayoutManager(activity)
view.recyclerView.adapter = MainAdapter()
return view
}}