FirebaseRecyclerAdapter не показывает журналы

Я хочу показать список групповых чатов во фрагменте TabLayout. Итак, для этого я использовал FirebaseRecyclerAdapter в качестве своего адаптера и поместил его в RecyclerView.

Это мои зависимости:

implementation 'com.firebaseui:firebase-ui-database:4.1.0'
implementation 'com.google.firebase:firebase-database:16.0.1'
implementation 'com.google.firebase:firebase-core:16.0.1'
implementation 'com.android.support:support-v4:27.1.1

Это моя структура базы данных firebase

FirebaseRecyclerAdapter не показывает журналы

Это моя модель:

public class ChatConv {

private String image, last_msg, name, online_status;

public ChatConv() {
}

public ChatConv(String image, String last_msg, String name, String online_status) {
    this.image = image;
    this.last_msg = last_msg;
    this.name = name;
    this.online_status = online_status;
}

public String getImage() {
    return image;
}

public void setImage(String image) {
    this.image = image;
}

public String getLast_msg() {
    return last_msg;
}

public void setLast_msg(String last_msg) {
    this.last_msg = last_msg;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getOnline_status() {
    return online_status;
}

public void setOnline_status(String online_status) {
    this.online_status = online_status;
}
}

Я создал класс адаптера, который расширяет FirebaseRecyclerAdapter, и это мой код:

public class ChatConvAdapter extends FirebaseRecyclerAdapter<ChatConv, ChatConvAdapter.ViewHolder> {

private static final String TAG = "ChatConvAdapter";

public ChatConvAdapter(@NonNull FirebaseRecyclerOptions<ChatConv> options) {
    super(options);
}

@Override
protected void onBindViewHolder(@NonNull ViewHolder holder, int position, @NonNull ChatConv model) {
    holder.bind(model);
    Log.i(TAG, "onBind is called");
    Log.i(TAG, "name= " + model.getName());
    Log.i(TAG, "msg= " + model.getLast_msg());
    Log.i(TAG, "image= " + model.getImage());
}

@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    View view = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.row_item_global_list, parent, false);
    Log.i(TAG, "onCreate is called");
    return new ViewHolder(view);
}

class ViewHolder extends RecyclerView.ViewHolder {

    @BindView(R.id.item_image)
    CircleImageView imageView;

    @BindView(R.id.item_name)
    TextView nameView;

    @BindView(R.id.item_desc)
    TextView msgView;

    @BindView(R.id.item_time)
    TextView timeView;

    ViewHolder(View itemView) {
        super(itemView);
        ButterKnife.bind(this, itemView);
    }

    public void bind(ChatConv chatConv) {
        String name = chatConv.getName();
        String image = chatConv.getImage();
        String msg = chatConv.getLast_msg();

        nameView.setText(name);
        msgView.setText(msg);
        Picasso.get().load(image).noFade().into(imageView);
    }
}

}

В моем фрагменте я инициализировал свой адаптер и установил адаптер внутри onCreateView ()

    @Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate(R.layout.layout_chat_list, container, false);
    unbinder = ButterKnife.bind(this, view);
    initObjects();
    setUpRecyclerView();
    setUpAdapter();
    return view;
}

private void setUpAdapter() {
    Query query = mWorldChatRef.orderByKey();
    FirebaseRecyclerOptions<ChatConv> options = new FirebaseRecyclerOptions.Builder<ChatConv>()
            .setQuery(query, ChatConv.class).build();
    mAdapter = new ChatConvAdapter(options);
    listChatView.setAdapter(mAdapter);
}

И startListening / stopListening в onStart () / onStop ();

    @Override
public void onStart() {
    super.onStart();
    mAdapter.startListening();
}

@Override
public void onStop() {
    super.onStop();
    mAdapter.stopListening();
}

Я искал возможный ответ здесь, в StackOverflow, но в моем случае это не сработало. Почему я не получаю логи? Я что-то пропустил?

0
0
59
1

Ответы 1

Я нашел собственное решение, добавив эту строку в класс, расширяющий Application.

@Override
public void onCreate() {
    super.onCreate();

    Timber.plant(new Timber.DebugTree());

    FirebaseDatabase instance = FirebaseDatabase.getInstance();
    instance.setPersistenceEnabled(true);
}

Другие вопросы по теме