[英]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.