android - RecyclerView 上未解决的参考
问题描述
我能够从 Firebase 检索数据,但是当我尝试将其加载到 groupie 适配器时,recyclerview 活动未加载,并显示以下错误“未解决的参考:由于接收器类型不匹配,以下候选均不适用....",我缺少依赖项吗?
这是我的活动代码,在 fetchUser 方法下是我得到错误的地方:
import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import com.google.firebase.database.DataSnapshot
import com.google.firebase.database.DatabaseError
import com.google.firebase.database.FirebaseDatabase
import com.google.firebase.database.ValueEventListener
import com.xwray.groupie.GroupAdapter
import com.xwray.groupie.GroupieViewHolder
import com.xwray.groupie.Item
import kotlinx.android.synthetic.main.activity_new_message.*
class NewMessageActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_new_message)
// Activity screen title
supportActionBar?.title = "Select User"
val adapter = GroupAdapter<GroupieViewHolder>()
adapter.add(UserItem())
adapter.add(UserItem())
adapter.add(UserItem())
recycler_view_new_message.adapter = adapter
fetchUsers()
}
}
private fun fetchUsers() {
val ref = FirebaseDatabase.getInstance().getReference("/users")
ref.addListenerForSingleValueEvent(object: ValueEventListener {
override fun onDataChange(p0: DataSnapshot) {
val adapter = GroupAdapter<GroupieViewHolder>()
p0.children.forEach {
Log.d("NewMessage", it.toString())
val user = it.getValue(User::class.java)
adapter.add(UserItem())
}
recycler_view_new_message.adapter = adapter /// THIS IS WHERE I GET THE UNRESOLVED REFERENCE ERROR
}
override fun onCancelled(p0: DatabaseError) {
}
})
}
class UserItem: Item<GroupieViewHolder>() {
override fun bind(viewHolder: GroupieViewHolder, position: Int) {
}
override fun getLayout(): Int {
return R.layout.user_row_new_message
}
}
这是 gradle 依赖项:
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.core:core-ktx:1.0.2'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
implementation 'com.google.firebase:firebase-analytics:17.2.0'
implementation 'com.google.firebase:firebase-auth:19.2.0'
implementation 'com.google.firebase:firebase-storage:19.1.0'
implementation 'com.google.firebase:firebase-database:19.1.0'
implementation 'de.hdodenhof:circleimageview:3.0.1'
implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation "com.xwray:groupie:2.7.0"
implementation 'com.squareup.picasso:picasso:2.71828'
}
apply plugin: 'com.google.gms.google-services'
这是我的 recyclerView XML 配置:
<?xml version="1.0" encoding="utf-8"?>
<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=".NewMessageActivity">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler_view_new_message"
android:layout_width="0dp"
android:layout_height="0dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
解决方案: 它最终成为一个非常愚蠢的错误,我意识到我已经将 fetchUsers() 方法留在了 NewMessageActivity 类之外,所以我只是将该方法移回类中并且我能够引用 RecyclerView 组件。
解决方案
RecyclerView
在为它设置适配器之前,使用下面的代码定义对它的引用。IE
类中它上面的外部
onCreate
函数。定义RecyclerView
如下。lateinit var recycler_view_new_message: RecyclerView
在recycler_view_new_message.adapter = adapter
onCreate
之前的函数中,添加以下代码。recycler_view_new_message = findViewById<RecyclerView>(R.id. recycler_view_new_message)
推荐阅读
- php - WordPress 更改后返回错误的图像大小
- file - 写入大约 2 GB Vertx 的文件时出现内存不足错误
- javascript - 通过数组元素的Javascript滑块
- python - 创建vectors.dense和sparse.dense,它们是一样的吗?
- php - LaratrustSeeder 类不存在
- botframework - MS Teams submitTask 无法在 IOS Teams 应用程序中提交给机器人
- html - 我的图像(在 div 下标记)无法并排坐在同一行
- ios - 如何添加像模态视图(iOS)这样的联系人应用程序?
- javascript - 使用 React 功能组件时如何防止重新渲染
- blockchain - 区块链上存在比特币地址