【问题标题】:Android - Class java.util.Map has generic type parameters, please use GenericTypeIndicator insteadAndroid - 类 java.util.Map 具有泛型类型参数,请改用 GenericTypeIndicator
【发布时间】:2018-09-20 21:11:02
【问题描述】:

我知道有很多类似的问题,但我已经阅读并尝试了所有方法,但仍然无法解决这个问题。我想要实现的是用来自 firebase 的数据填充我的列表视图。我正在关注 youtube 上的教程,但我添加了一些东西,特别是时间戳。错误在我的 for 循环中并说:

类 java.util.Map 有泛型类型参数,请改用 GenericTypeIndicator

这是我的数据库的样子:

我的 Notes.java

    public class Notes {
String noteId;
String noteCategory;
String note;
String rating;
public Map timeStamp;

public Notes(){

}

public Notes(String noteId, String noteCategory, String note, String rating, Map timeStamp) {
    this.noteId = noteId;
    this.noteCategory = noteCategory;
    this.note = note;
    this.rating = rating;
    this.timeStamp = timeStamp;
}


public String getNoteId() {
    return noteId;
}

public String getNoteCategory() {
    return noteCategory;
}

public String getNote() {
    return note;
}

public String getRating() {
    return rating;
}

public Map<String,String> getTimeStamp() { return timeStamp;}
}

下面是我的 NoteList.java

@Override
protected void onStart() {
    super.onStart();
    databaseNotes.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            notesList.clear();
            for(DataSnapshot noteSnapshot : dataSnapshot.getChildren()){
                Notes notes = noteSnapshot.getValue(Notes.class);
                notesList.add(notes);

            }

            NoteList adapter = new NoteList(MyNotes.this, notesList);
            listViewNotes.setAdapter(adapter);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

任何建议将不胜感激!提前谢谢你。

编辑:好的,我已经尝试了建议的答案,在我记录地图后,它会在控制台上显示我的数据。但是,如何将我的地图迭代到列表视图中?

Map<String, Object> map = (Map<String, Object>) dataSnapshot.getValue();

【问题讨论】:

标签: java android firebase firebase-realtime-database


【解决方案1】:

从查看您的数据库来看,您应该使用 intlong 类型而不是 map 类型,因为您的时间戳具有数字值

【讨论】:

  • 只是把它改成long?
  • 我确实尝试将所有内容从 Map 更改为 long。但它显示另一个错误
  • 这个错误 com.google.firebase.database.DatabaseException: Expected a Map while deserializing, but got a class java.lang.Long
  • 你是否更改了类内的所有引用并使用了Notes notes = noteSnapshot.getValue(Notes.class);
猜你喜欢
  • 2016-10-07
  • 2019-01-09
  • 1970-01-01
  • 2021-09-01
  • 1970-01-01
  • 2011-09-03
  • 2018-04-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多