无法获取项目的唯一ID,请点击Listview

时间:2018-03-18 10:43:09

标签: java android firebase firebase-realtime-database

我希望通过点击listview中的项目来获取用户的唯一ID ... 我尝试使用datasnapshot.getKey方法,但它没有发生 根据一些Youtube视频getRef(position).getKey();应该有效,但显示无法解析符号getRef ...为什么会这样? 这是我的代码

        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();
                list_user_id = ds.getKey();
                String user_id = getRef(position).getKey();
//                    Log.d("TAG", name);
                al.add(name);


            }
            listView.setAdapter(adapter);

        }

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

listuser = ds.getKey方法无效,所以我尝试getRef(position).getKey,但不接受......有人请帮忙

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

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

返回用户名的字符串userid .. idk y ...如果我在“visit_user_id”之后放入list_user_id,则返回我自己的用户ID ... any1 atleast告诉为什么itemclick中的用户ID返回名称?< / p>

1 个答案:

答案 0 :(得分:0)

要获取密钥,您需要以与获取名称相同的方式执行此操作:

String user_id = ds.child("Id").getValue().toString();

假设数据库中的id字段被称为Id

getRef()方法返回DatabaseReference对象,可以在DataSnapshot对象上调用。与此身份无关。