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

5
我知道有很多类似于我的问题,但是我已经阅读并尝试了所有方法,但仍无法解决这个问题。我想要实现的是从 Firebase 加载数据并将其展示在列表视图中。我正在遵循 YouTube 上的教程,但我添加了一些东西,具体来说是时间戳。错误出现在我的 for 循环中,提示:

Class java.util.Map has generic type parameters, please use GenericTypeIndicator instead

这是我的数据库长这样:

My Database

我的 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();

成员变量timeStamp的类型是Map,但它没有表明键和值的类型。应该写成类似于Map<String, String>这样的形式。 - 0xDEADC0DE
https://dev59.com/3loU5IYBdhLWcg3wOlE- - Qandil Tariq
是的,我已经浏览了所有的帖子并尝试了一切。但它还是不起作用。@NileshRathod - David99
更新了我的问题。 - David99
显示剩余3条评论
1个回答

1

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


只需要将它改成长的吗? - David99
我尝试将Map<String,String>更改为long,但是它显示另一个错误。 - David99
这个错误 com.google.firebase.database.DatabaseException: 在反序列化时期望得到一个 Map,但实际上得到了一个 java.lang.Long 类。 - David99
你是否已经更改了类内的所有引用,并使用Notes notes = noteSnapshot.getValue(Notes.class); - regev avraham

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接