FirebaseRecyclerAdapter不显示日志

时间:2018-08-10 02:48:05

标签: android firebase firebase-realtime-database

我想在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数据库结构

enter image description here

这是我的模特

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);
}

然后在onStart()/ onStop()中进行startListening / stopListening;

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

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

我已经在StackOverflow中搜索了可能的答案,但不适用于我的情况。为什么不获取日志?我想念什么吗?

1 个答案:

答案 0 :(得分:0)

通过将这行添加到扩展Application的类中,我找到了自己的解决方案。

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

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

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