Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Firebase登录后聊天_Android_Firebase_Firebase Realtime Database - Fatal编程技术网

Android Firebase登录后聊天

Android Firebase登录后聊天,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我想选择displayName显示在用户列表中。但是我不知道如何在数据库用户中选择displayName,你能帮我吗。 例如,我选择了6Z86LIYRMaM9vtmOrd23kAeICO63,但我想显示displayName ListView usersList; TextView noUsersText; ArrayList<String> al = new ArrayList<>(); int totalUsers = 0; Progr

我想选择displayName显示在用户列表中。但是我不知道如何在数据库用户中选择displayName,你能帮我吗。
例如,我选择了
6Z86LIYRMaM9vtmOrd23kAeICO63
,但我想显示displayName

ListView usersList;
    TextView noUsersText;
    ArrayList<String> al = new ArrayList<>();
    int totalUsers = 0;
    ProgressDialog pd;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_users);

        usersList = (ListView)findViewById(R.id.usersList);
        noUsersText = (TextView)findViewById(R.id.noUsersText);

        pd = new ProgressDialog(Users.this);
        pd.setMessage("Loading...");
        pd.show();

        String url = "https://chatapp.firebaseio.com/users.json";

        StringRequest request = new StringRequest(Request.Method.GET, url, new Response.Listener<String>(){
            @Override
            public void onResponse(String s) {
                doOnSuccess(s);
            }
        },new Response.ErrorListener(){
            @Override
            public void onErrorResponse(VolleyError volleyError) {
                System.out.println("" + volleyError);
            }
        });

        RequestQueue rQueue = Volley.newRequestQueue(Users.this);
        rQueue.add(request);

        usersList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                UserDetails.chatWith = al.get(position);
                startActivity(new Intent(Users.this, Chat.class));
            }
        });
    }

    public void doOnSuccess(String s){
        try {
            JSONObject obj = new JSONObject(s);

            Iterator i = obj.keys();
            String key = "";

            while(i.hasNext()){
                key = i.next().toString();

                if(!key.equals(UserDetails.username)) {
                    al.add(key);
                }

                totalUsers++;
            }

        } catch (JSONException e) {
            e.printStackTrace();
        }

        if(totalUsers <=1){
            noUsersText.setVisibility(View.VISIBLE);
            usersList.setVisibility(View.GONE);
        }
        else{
            noUsersText.setVisibility(View.GONE);
            usersList.setVisibility(View.VISIBLE);
            usersList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, al));
        }

        pd.dismiss();
    }
ListView用户列表;
文本视图nouser文本;
ArrayList al=新的ArrayList();
int totalUsers=0;
进展性帕金森病;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_用户);
usersList=(ListView)findViewById(R.id.usersList);
nouser文本=(TextView)findViewById(R.id.nouser文本);
pd=新建进度对话框(Users.this);
pd.setMessage(“加载…”);
pd.show();
字符串url=”https://chatapp.firebaseio.com/users.json";
StringRequest=newStringRequest(request.Method.GET,url,new Response.Listener()){
@凌驾
公共void onResponse(字符串s){
最终成功;
}
},new Response.ErrorListener(){
@凌驾
公共错误响应(截击错误截击错误){
System.out.println(““+截击错误”);
}
});
RequestQueue rQueue=Volley.newRequestQueue(Users.this);
rQueue.add(请求);
usersList.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
UserDetails.chatWith=al.get(位置);
startActivity(新意图(Users.this、Chat.class));
}
});
}
公共void doOnSuccess(字符串s){
试一试{
JSONObject obj=新的JSONObject;
迭代器i=obj.keys();
字符串键=”;
while(i.hasNext()){
key=i.next().toString();
如果(!key.equals(UserDetails.username)){
al.添加(键);
}
totalUsers++;
}
}捕获(JSONException e){
e、 printStackTrace();
}

如果(totalUsers如评论中所建议,则应转到firebase文档,了解如何使用SDK

针对您的问题,您需要为您的用户创建一个POJO类,以便以后从数据库检索用户时可以序列化对象

User.java

public class User {
private int avatarId;
private String connection;
private Long createAt;
private String displayName;
private String email;

public User() {
}

public int getAvatarId() {
    return avatarId;
}

public void setAvatarId(int avatarId) {
    this.avatarId = avatarId;
}

public String getConnection() {
    return connection;
}

public void setConnection(String connection) {
    this.connection = connection;
}

public Long getCreateAt() {
    return createAt;
}

public void setCreateAt(Long createAt) {
    this.createAt = createAt;
}

public String getDisplayName() {
    return displayName;
}

public void setDisplayName(String displayName) {
    this.displayName = displayName;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}
}
然后您可以像这样从数据库中获取用户信息

DatabaseReference databaseRef = FirebaseDatabase.getInstance().getReference()
DatabaseReference userReference = databaseRef.child("users").child("6Z86LIYRMaM9vtmOrd23kAeICO63");
    ValueEventListener userListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        //Create a User POJO class with the same values you have in your db
        //and its getters and setters
        User user = dataSnapshot.getValue(User.class);
        //This is how you get the displayName from a user from the db
        user.getDisplayName();
        // ...
    }

@Override
public void onCancelled(DatabaseError databaseError) {

}
};
userReference.addValueEventListener(userListener);

我希望这有帮助

你到底为什么不在onCreate中使用Firebase的Android SDK?和ValueEventListener userListener=new ValueEventListener()?以及关于聊天时发送图像的新问题也许你可以帮我是的,你可以在onCreate中声明de ValueEventListener