繁体   English   中英

Firebase UI 更新后无法使 viewholder 成为最终版本

[英]Can't make viewholder final after firebase UI update

我将com.firebaseui:firebase-ui-database包从 1.1.1 更新到 3.3.1。 似乎我不能在FirebaseRecyclerAdapter使用 populateViewHolder 了。 相反,我应该使用onBindViewHolder 我认为这很好,但是当我从内部类(另一个数据库 Ref)中调用 viewholder 时,我需要将 viewholder 设为 final,此时适配器会出现以下错误:

在此处输入图片说明

编码

addedFriendsRecycleViewAdapter = new FirebaseRecyclerAdapter<Boolean, SingleImageViewHolder>(
      Boolean.class,
      R.layout.adduser_single_round_pictrure_layout,
      SingleImageViewHolder.class,
      mMembersDatabase
) {
      @Override
      public SingleImageViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
          return null;
      }

      @Override
      protected void onBindViewHolder(@NonNull final SingleImageViewHolder holder, int position, @NonNull Boolean model) {
          final String added_list_user_id = getRef(position).getKey();

          mUsersDatabase.child(added_list_user_id).addValueEventListener(new ValueEventListener() {
              @Override
              public void onDataChange(DataSnapshot dataSnapshot) {

                  String userThumb = dataSnapshot.child("thumb_image").getValue().toString();

                  holder.setImage(userThumb, AddUserActivity.this);

              }

              @Override
              public void onCancelled(DatabaseError databaseError) {

              }
          });
      }
  };

您需要在 3.0+ 版本中使用FirebaseRecyclerOptions

首先,通过构建 FirebaseRecyclerOptions 来配置适配器:

 FirebaseRecyclerOptions<POJO> options =
            new FirebaseRecyclerOptions.Builder<POJO>()
                    .setQuery(query, POJO.class)
                    .build();

接下来创建 FirebaseRecyclerAdapter 对象:

FirebaseRecyclerAdapter adapter = new FirebaseRecyclerAdapter<POJO, SingleImageViewHolder>(options) {
@Override
public SingleImageViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    // Create a new instance of the ViewHolder, in this case we are using a custom
    // layout called R.layout.message for each item
    View view = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.message, parent, false);

    return new SingleImageViewHolder(view);
}

@Override
protected void onBindViewHolder(SingleImageViewHolder holder, int position, POJO model) {
    // Bind the Chat object to the ChatHolder
    // ...
   }
};

更多细节在这里:

https://github.com/firebase/FirebaseUI-Android/tree/master/database

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM