【问题标题】:RecyclerAdapter with Firebase - Where is populateViewHolder? [duplicate]带有 Firebase 的 RecyclerAdapter - populateViewHolder 在哪里? [复制]
【发布时间】:2017-12-29 18:14:10
【问题描述】:

我正在尝试使用 FirebaseRecyclerAdapter 在我的 android 应用程序上查看数据库信息,但我期望 populateViewHolder 方法会弹出另外两个。代码如下:

FirebaseRecyclerAdapter<NoteModel, NoteViewHolder> firebaseRecyclerAdapter =
            new FirebaseRecyclerAdapter<NoteModel, NoteViewHolder>(

                    NoteModel.class,
                    R.layout.single_note_layout,
                    NoteViewHolder.class,
                    fNotesDatabase

            ) {
                @Override
                public NoteViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
                    return null;
                }

                @Override
                protected void onBindViewHolder(@NonNull NoteViewHolder holder, int position, @NonNull NoteModel model) {

                }
            };

}

public NoteViewHolder 和 protected void onBindViewHolder 在使用 FirebaseReccylerAdapater 后没有像过去那样出现。我期待:

protected void populateViewHolder ( NoteViewHolder viewHolder, NoteModel model, int position) {
}

有人知道为什么这个不再可用吗?我不确定如何完成代码,因为我以前从未见过这样的代码。我需要补充......

String noteId = getRef(position).getKey();

....但我不知道在哪里。

提前致谢。

【问题讨论】:

    标签: android firebase firebaseui


    【解决方案1】:

    FirebaseUI migration guide 是一个很好的起点。本质上,你会想要做这样的事情:

    FirebaseRecyclerOptions<NoteModel> options = new FirebaseRecyclerOptions.Builder<>()
            .setQuery(fNotesDatabase, NoteModel.class)
            .build();
    
    FirebaseRecyclerAdapter<NoteModel, NoteViewHolder> firebaseRecyclerAdapter =
            new FirebaseRecyclerAdapter<NoteModel, NoteViewHolder>(options) {
                @Override
                public NoteViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
                    return new NoteViewHolder(LayoutInflater.from(parent.getContext())
                            .inflate(R.layout.single_note_layout, parent, false));
                }
    
                @Override
                protected void onBindViewHolder(@NonNull NoteViewHolder holder,
                                                int position,
                                                @NonNull NoteModel model) {
                    String key = getSnapshots().getSnapshot(position).getKey();
                    holder.bind(...);
                }
            };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-08
      • 1970-01-01
      • 1970-01-01
      • 2011-09-02
      • 2022-10-14
      • 1970-01-01
      相关资源
      最近更新 更多