簡體   English   中英

我想獲得用戶唯一的ID。 我如何使用getKey方法獲取它

[英]i want to get the user unique id. how do i fetch it using getKey method

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
    DatabaseReference usersRef = rootRef.child("Users");
    ValueEventListener eventListener = new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            ListView listView = (ListView) rootView.findViewById(R.id.usersList);
            ArrayAdapter<String> adapter;
            adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, android.R.id.text1, al);
            for(DataSnapshot ds : dataSnapshot.getChildren()) {
                name = ds.child("Name").getValue().toString();

//                    Log.d("TAG", name);
                al.add(name);
                String list_user_id = getRef(position).getKey();
            }
            listView.setAdapter(adapter);
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            Toast.makeText(getActivity(),"Please Check Your Internet Connection",Toast.LENGTH_SHORT).show();
        }
    };
    usersRef.addListenerForSingleValueEvent(eventListener);

在字符串list_user_id = getRef(Position).getKey()的行中:我猜這返回的是null,因為當用戶單擊listview中的項目時

 usersList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

            UserDetails.chatWith = al.get(position);
            Intent intent = new Intent(getActivity(), Chat.class);
            intent.putExtra("visit_user_id",list_user_id);
            intent.putExtra("user_name",name);
            startActivity(intent);
        }
    });
    return rootView;

他將被定向到聊天活動...一旦我打開聊天活動,即時通訊在此行上獲取空的pointerexception

   MessageRecieverId = getIntent().getExtras().get("visit_user_id").toString();

我哪里出問題了? 嘗試制作聊天應用程序,因此需要獲取用戶的唯一ID。數據庫屏幕快照http://ibb.co/cwOQtx

再次得到一個空錯誤

rootRef.child("Messages").child(MessageSenderId).child(MessageRecieverId)
            .addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {
            Messages messages = dataSnapshot.getValue(Messages.class);
            messagesList.add(messages);
            messageAdapter.notifyDataSetChanged();
        }

誤差在線路rootref.chil(“消息”)........錯誤- http://ibb.co/h4D2dx

更改代碼(在ValueEventListener內部):

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

對此:

String list_user_id = ds.getKey();

for(DataSnapshot ds : dataSnapshot.getChildren())此處的ds是在直接子級中進行迭代的,這些子級是唯一的ID,然后使用上述方法,您將能夠檢索到唯一的ID。

另外根據firebase文檔:

getRef()不接受任何參數。

更多信息在這里:-

https://firebase.google.com/docs/reference/android/com/google/firebase/database/DataSnapshot.html#getRef()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM