我有一个非常简单的
ViewPager2
,但是它不起作用。我只能看到一个白色的屏幕。有人可以帮我解决这个问题吗?我相信这是 ViewPager2
最简单的基本示例,但它就是行不通。任何帮助表示赞赏。
我的适配器:
class MyAdapter(private val ctx: Context) : RecyclerView.Adapter<MyAdapter.ViewHolder>() {
private val titles = arrayOf("ABC", "DEF", "GHCH","IJK", "LMN")
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val view: View = LayoutInflater.from(ctx).inflate(R.layout.my_holder, parent, false)
return ViewHolder(view)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.text.text = titles[position]
}
override fun getItemCount(): Int {
return titles.size
}
class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
var text: TextView
init {
text = itemView.findViewById(R.id.titles)
}
}
}
支架:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<TextView
android:id="@+id/titles"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textSize="25sp"
android:textColor="@android:color/black"
android:gravity="center"
/>
</LinearLayout>
活动:
class TestActivity : AppCompatActivity() {
private lateinit var binding: ActivityTestBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityTestBinding.inflate(layoutInflater)
setContentView(R.layout.activity_themes)
val viewPager2Adapter = MyAdapter(this)
binding.viewpager.adapter = viewPager2Adapter
binding.viewpager.registerOnPageChangeCallback(object : OnPageChangeCallback() {})
}
}
活动 XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
/>
</LinearLayout>
确保 ActivityTestBinding 是从 XML 布局文件 (activity_test.xml) 正确生成的。另外,请确保正确实现 MyAdapter、MyHolder 和其他必要的类。这应该可以解决 ViewPager2 不显示内容的问题。