gpt4 book ai didi

android - Recyclerview View 未填充

转载 作者:行者123 更新时间:2023-12-03 23:33:37 26 4
gpt4 key购买 nike

我是一名 Kotlin 新手,正在学习如何创建简单的 recyclerview 应用。我的代码应该在垂直堆叠的单元格中列出整数 1..10。但是,它只列出了第一项。我已经查阅了几个教程并多次审查了我的代码(经过长时间的休息),但我看不出我的代码有什么问题。

我今天早些时候有了打印日志语句的好主意。检查它们,我注意到我的 onBindViewHolder 函数只被调用一次。我犯了什么错误?

这是我的日志输出:

D/QuoteAdapter: value is: 1
D/QuoteAdapter: index is: 0
D/QuoteAdapter: Size is: 10

我的 Activity :

class MainActivity : AppCompatActivity() {
lateinit var mRecyclerView: RecyclerView

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)

mRecyclerView = findViewById(R.id.recyclerView)
mRecyclerView.layoutManager = LinearLayoutManager(this)

mRecyclerView.adapter = QuoteAdapter()
//mRecyclerView.setHasFixedSize(true)
}
}

我的适配器:

class QuoteAdapter : RecyclerView.Adapter<QuoteViewHolder>() {
private val listOfInts = intArrayOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
private val TAG = "QuoteAdapter"

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): QuoteViewHolder {
val view = LayoutInflater.from(parent.context)
.inflate(R.layout.recyclerview_item_row, parent, false)
return QuoteViewHolder(view)
}

override fun getItemCount(): Int {
Log.d(TAG, "Size is: ${listOfInts.size.toString()}")
return listOfInts.size
}

override fun onBindViewHolder(holder: QuoteViewHolder, position: Int) {
val item = listOfInts[position]
Log.d(TAG, "value is: ${item.toString()}")
Log.d(TAG, "index is: ${position.toString()}")
holder.listTitle.text = item.toString()
}
}

我的观众:

class QuoteViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val listTitle = itemView.findViewById(R.id.itemString) as TextView
}

我的布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">

<TextView
android:id="@+id/itemString"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>

我的主要布局如下图:

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:layout_marginBottom="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

最佳答案

在你的“我的布局”中试试这个:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="wrap_content">

<TextView
android:id="@+id/itemString"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>

通知 LinearLayoutlayout_height 已更改为 wrap_content

还怀疑您是否需要 ViewHolder 的项目 xml 上的 android:orientation="vertical" 除非您将添加不止 1 个 TextView future 。

关于android - Recyclerview View 未填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65052336/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com