【问题标题】:Recyclerview is not displaying anything, any ideas? Using FirestoreUI RecyclerAdapterRecyclerview 没有显示任何内容,有什么想法吗?使用 FirestoreUI RecyclerAdapter
【发布时间】:2018-06-09 12:37:29
【问题描述】:

下面的代码我似乎已经完成了所有需要的操作,但是 recyclerview 只是没有被填充。

我什至将 Log 放在 OnDateChange 上以查看它是否被调用,并且在我在 Galaxy S6 上运行它之后,它在 LogCat 上被调用过一次。此外,数据库是公开的。

RecyclerView chat_view;
EditText message_text;

CollectionReference reference = FirebaseFirestore.getInstance().collection("stage2");
Query query = reference.orderBy("timestamp");
FirestoreRecyclerAdapter<ChatMessage,ChatHolder> adapter=null;




@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_chat);
    //initializing, called below
    init();
}





private FirestoreRecyclerAdapter<ChatMessage,ChatHolder> newAdapter() {
    final FirestoreRecyclerOptions options = new FirestoreRecyclerOptions.Builder<ChatMessage>()
            .setQuery(query,ChatMessage.class)
            .setLifecycleOwner(this)                
                            .build();

    return new FirestoreRecyclerAdapter<ChatMessage, ChatHolder>(options) {
        @Override
        public ChatHolder onCreateViewHolder(ViewGroup parent, int viewType) {
           View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.chat_item,parent,false);
            //if(((ChatMessage)options.getSnapshots().getSnapshot(viewType)).)
            return new ChatHolder(view);
        }

        @Override
        protected void onBindViewHolder(ChatHolder holder, int position, ChatMessage model) {         




            //displaying the message and users into the recyclerview
            holder.user_msg.setText(model.getMessage());
            holder.user_date.setText(model.getDate());
            holder.user_name.setText(model.getName());

        }




        @Override
        public void onDataChanged() {
            Log.d("TAG", "YESSIR");

        }

        @Override
        public void onError(FirebaseFirestoreException e) {
            super.onError(e);
        }
    };




}

private void init(){
    chat_view = (RecyclerView) findViewById(R.id.chat_view);
    chat_view.setVerticalScrollBarEnabled(true);
    LinearLayoutManager layoutManager = new LinearLayoutManager(this);

    chat_view.setLayoutManager(layoutManager);
    adapter = newAdapter();
    chat_view.setAdapter(adapter);




    message_text = (EditText) findViewById(R.id.message_text);
    message_text.setEnabled(appUtils.isSignedIn());
    findViewById(R.id.send_button).setEnabled(appUtils.isSignedIn());




}

所以,我们有了它,我不知道此时可能出现什么问题。我也在使用最新的 Firestore UI 依赖项。

【问题讨论】:

    标签: android firebase android-recyclerview google-cloud-firestore firebaseui


    【解决方案1】:

    看来您已经完成了所有必要的工作。使用FirestoreRecycleroptions 并在onCreateViewHolder 中填充布局。

    为了让FirestoreRecyclerAdapter 能够获得有关活动的数据,那么您需要监听onStart() 中的任何变化,这在onCreate() 之后。还 在onStop 你可以停止收听。

        @Override
    public void onStart() {
        super.onStart();
        adapter.startListening();
    }
    
    @Override
    public void onStop() {
        super.onStop();
        adapter.stopListening();
    }
    

    【讨论】:

    • 哦,我做到了。我在 recyclerOptions 上尝试了这个和 LifecycleOwner 方法,同样的问题。
    • @BaldricNguena 尝试在 setContentView 之后移动您的集合引用和查询以及您的 firestore.getinstance 只需将它们声明为全局变量,但不要在 setContentView 之前对其进行初始化
    • 我想通了,查询有错误 = reference.orderBy("timestamp");
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-28
    • 1970-01-01
    相关资源
    最近更新 更多