繁体   English   中英

将datasnaphot从Java转换为Kotlin

[英]convert datasnaphot from Java to Kotlin

我是Kotlin的开始,所以我想转换这部分代码:

Query query = reference.child("users");

query.addValueEventListener(new ValueEventListener() {

    public void onDataChange(DataSnapshot dataSnapshot) {
        Users users = null;

        for (DataSnapshot d: dataSnapshot.getChildren()) {
            users = d.getValue(Users.class);

            if (users.getEmail().equals(mail)) {
              photoUri = users.getPhotos();
              nameSurname = users.getNome() + " " + users.getCognome();
              break;
            }
        }

        if (photoUri != null) {
            Glide.with(MainActivity.this)
                 .load(photoUri)
                 .transform(new CircleTransform(MainActivity.this))
                 .into(profile);
        }
        else {
            Glide.with(MainActivity.this)
                 .load(graphic)  
                 .transform(new CircleTransform(MainActivity.this))
                 .into(profile);
        }
    }

    public void onCancelled(DatabaseError databaseError) {
    }

});

到科特林。 因此,我编写了以下代码:

class DataReferenceService @Inject constructor(private var auth: FirebaseDatabase) 
        : MainContract.DatabaseRepository,ValueEventListener {

    var mail: String? = null

    override fun getImageProfile(mail: String?) {
        this.mail = mail
        val query = auth.reference.child("users")
        query.addValueEventListener(this)
    }

    override fun onCancelled(p0: DatabaseError?) {
    }

    override fun onDataChange(data: DataSnapshot?) {
        var user: User? = null

        data?.children?.forEach {
            child -> getPhotos(child)
        }
    }

    fun getPhotos(child: DataSnapshot) {
        val user = child.getValue(User.class) // name expected, why ???
    }
}

问题是在注释中指示,为什么不转换呢? 还有其他方法吗? 我想使用takeIf{}但我不知道如何使用它。

谢谢

Java的User.class User::class.java于Kotlin中的User::class.java

有关此文档在这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM