有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何获取在listview上单击的项目的用户唯一id

 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(), 安卓.R.layout.simple_list_item_1, 安卓.R.id.text1, al);
            for(DataSnapshot ds : dataSnapshot.getChildren()) {

                name = ds.child("Name").getValue().toString();
                phonenumber=ds.getKey();
                list_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);

我有一个所有用户的活动。。。如果我点击一个用户,我想获取他们的唯一id,但我无法做到这一点。。。行-list\u user\u id=getRef(位置)中出错。getKey;我获取id的方法是错误的还是过时的


共 (2) 个答案

  1. # 1 楼答案

    您可以使用onDataChange中的Map方法从Firebase DB中获取所有键值,如下所示:

            Map<String, Object> td = null;
            for (com.google.firebase.database.DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
                td = (HashMap<String, Object>) postSnapshot.getValue();
                String userName= (String) td.get("userName");
                String mobileNUM= (String) td.get("mobileNUM");
                }
    
  2. # 2 楼答案

    由于您有一个listview,因此可以执行以下操作:

     lists.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                final String selectedFromList = (String)lists.getItemAtPosition(i);
                db= FirebaseDatabase.getInstance().getReference().child("Users");
                db.orderByChild("username").equalTo(selectedFromList).addListenerForSingleValueEvent(new ValueEventListener() {
                    @Override
                    public void onDataChange(DataSnapshot dataSnapshot) {
                        for(DataSnapshot data: dataSnapshot.getChildren()){
                                String ids=datas.getKey();
                        }
                    }
    
                    @Override
                    public void onCancelled(DatabaseError databaseError) {
    
                    }
                });
    
    
    
            }
        });
    

    假设您有一个包含用户名的listview,并且假设您的数据库中有此用户名:

     Users
       userid
          username://name
       userid
          username: //name
    

    使用这个final String selectedFromList = (String)lists.getItemAtPosition(i);您可以获得本例中的项目username。然后使用查询equalTo(),它将检查数据库并使用getKey()将该用户的id返回给您