【问题标题】:Is it possible to change a DataSnapShot to a Model?是否可以将 DataSnapShot 更改为模型?
【发布时间】:2018-08-29 11:46:15
【问题描述】:

我正在使用这样的东西:

int id = getSnapshots().getSnapshot(position).getId().hashCode();  

效果很好。不,我需要从 DataSnapShot 中获取模型。那可能吗?我试过这样的事情:

Note note = getSnapshots().getSnapshot(getAdapterPosition())...  

但我不知道如何完成这个,或者即使它可能。也许我需要一种完全不同的方式?

【问题讨论】:

    标签: android google-cloud-firestore android-adapter datasnap


    【解决方案1】:

    假设您的onBindViewHolder() 方法有一个名为viewHolderViewHolder 对象作为参数,要解决此问题,请使用以下代码:

    DocumentSnapshot snapshot = getSnapshots().getSnapshot(viewHolder.getAdapterPosition());
    Note note = snapshot.toObject(Note.class);
    Log.d("TAG", pm.getNodeId());
    

    假设你的模型类中有一个名为 nodeId 的字段和对应的名为 getNodeId() 的 getter,你的 logcat 中的输出将是你笔记的所有 id。

    【讨论】:

    • 感谢您的帮助。唯一的问题是我在onClick中使用了这行,所以我只使用getAdapterPosition()而不是viewHolder.getAdapterPosition()。但工作完美。再次感谢
    【解决方案2】:

    你可以转换它。这是一个例子:

    val yourModel = dataSnapshot.getValue(YourModelClass::class.java) as YourModelClass
    

    就是这样:)


    java风格:

    YourModelClass yourModel = (YourModelClass) getDataSnapshot().getValue(YourModelClass.class)
    

    【讨论】:

      猜你喜欢
      • 2012-03-19
      • 1970-01-01
      • 1970-01-01
      • 2016-10-28
      • 2023-01-09
      • 1970-01-01
      • 1970-01-01
      • 2016-09-23
      • 2015-11-18
      相关资源
      最近更新 更多