FirebaseRecyclerAdapter - populateViewHolder无法访问数据

时间:2018-01-09 15:41:45

标签: android firebase firebase-realtime-database kotlin firebaseui

我试图将实时数据库中的一些数据显示到回收器适配器中,但没有运气。我已经让FirebaseRecyclerAdapter在另一个活动(java)上运行,但在这个上它只是不起作用(kotlin)。奇怪的是,如果我使用ValueEventListener,数据返回就好了,但FirebaseRecyclerAdapter不起作用。

CLASS:

class FriendsActivity : AppCompatActivity() {

    private lateinit var friendsDb: DatabaseReference

    private var currentUser: FirebaseUser? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_friends)
        supportActionBar?.title = "Friends"

        friends_main_rec.layoutManager = LinearLayoutManager(this)
        friends_main_rec.setHasFixedSize(true)


        currentUser = FirebaseAuth.getInstance().currentUser

        friendsDb = FirebaseDatabase.getInstance().reference.child("FRIENDS")
                .child(currentUser!!.uid)

        val friendsRecyclerViewAdapter = object : FirebaseRecyclerAdapter<Friends, FriendsViewHolder>(
                Friends::class.java,
                R.layout.friend_single,
                FriendsViewHolder::class.java,
                friendsDb) {

            override fun populateViewHolder(viewHolder: FriendsViewHolder, model: Friends, position: Int) {
                Log.d("FriendsList", model.toString())
                viewHolder.setDate(model.date)
            }

        }

        friends_main_rec.adapter = friendsRecyclerViewAdapter
    }


    class FriendsViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {

        fun setDate(date: String) {
            itemView.friend_single_date.text = date
            Log.d("FriendsList", date)
        }

    }

POJO:

data class Friends(var date: String)

enter image description here

代码对我来说似乎很好,但显然它不正确。

1 个答案:

答案 0 :(得分:0)

这一行似乎存在一些问题

friendsDb = FirebaseDatabase.getInstance().reference.child("FRIENDS")
                .child(currentUser!!.uid)

在这里它将从&#34; FRIENDS / currentUser.uid&#34; 获得价值, 这是

之一
  • NBHxxxxxxxxxxxxxxxON2
  • it3xxxxxxxxxxxxxxxfj1

无法从此处直接访问 date对象,因为日期属于freind用户ID