2024/6/2 第二阶段冲刺

复制代码
 1 package com.example.chatapptest.activities;
 2 
 3 import androidx.appcompat.app.AppCompatActivity;
 4 
 5 import android.content.Intent;
 6 import android.os.Bundle;
 7 import android.view.View;
 8 
 9 import com.example.chatapptest.R;
10 import com.example.chatapptest.adapters.UsersAdapter;
11 import com.example.chatapptest.databinding.ActivityUsersBinding;
12 import com.example.chatapptest.listeners.UserListener;
13 import com.example.chatapptest.models.User;
14 import com.example.chatapptest.utilities.Constants;
15 import com.example.chatapptest.utilities.PreferenceManager;
16 import com.google.firebase.firestore.FirebaseFirestore;
17 import com.google.firebase.firestore.QueryDocumentSnapshot;
18 
19 import java.util.ArrayList;
20 import java.util.List;
21 
22 public class UsersActivity extends AppCompatActivity implements UserListener {
23 
24     private ActivityUsersBinding binding;
25     private PreferenceManager preferenceManager;
26 
27     @Override
28     protected void onCreate(Bundle savedInstanceState) {
29         super.onCreate(savedInstanceState);
30         binding = ActivityUsersBinding.inflate(getLayoutInflater());
31         setContentView(binding.getRoot());
32         preferenceManager = new PreferenceManager(getApplicationContext());
33         setListeners();
34         getUsers();
35     }
36 
37     private void setListeners(){
38         binding.imageBack.setOnClickListener(v -> onBackPressed());
39     }
40 
41     private void getUsers(){
42         loading(true);
43         FirebaseFirestore database = FirebaseFirestore.getInstance();
44         database.collection(Constants.KEY_COLLECTION_USERS)
45                 .get()
46                 .addOnCompleteListener(task -> {
47                     loading(false);
48                     String currentUserId = preferenceManager.getString(Constants.KEY_USER_ID);
49                     if(task.isSuccessful() && task.getResult() != null){
50                         List<User> users = new ArrayList<>();
51                         for(QueryDocumentSnapshot queryDocumentSnapshot : task.getResult()){
52                             if(currentUserId.equals(queryDocumentSnapshot.getId())){
53                                 continue;
54                             }
55                             User user = new User();
56                             user.name = queryDocumentSnapshot.getString(Constants.KEY_NAME);
57                             user.email = queryDocumentSnapshot.getString(Constants.KEY_EMAIL);
58                             user.image = queryDocumentSnapshot.getString(Constants.KEY_IMAGE);
59                             user.token = queryDocumentSnapshot.getString(Constants.KEY_FCM_TOKEN);
60                             user.id = queryDocumentSnapshot.getId();
61                             users.add(user);
62                         }
63                         if(users.size() > 0){
64                             UsersAdapter usersAdapter = new UsersAdapter(users,this);
65                             binding.userRecyclerView.setAdapter(usersAdapter);
66                             binding.userRecyclerView.setVisibility(View.VISIBLE);
67                         }else {
68                             showErrorMessage();
69                         }
70                     }else {
71                         showErrorMessage();
72                     }
73                 });
74     }
75 
76     private void showErrorMessage(){
77         binding.textErrorMessage.setText(String.format("%s","No user available"));
78         binding.textErrorMessage.setVisibility(View.VISIBLE);
79     }
80 
81     private void loading(Boolean isLoading){
82         if(isLoading){
83             binding.progressBar.setVisibility(View.VISIBLE);
84         }else {
85             binding.progressBar.setVisibility(View.INVISIBLE);
86         }
87     }
88 
89     @Override
90     public void onUserClicked(User user) {
91         Intent intent = new Intent(getApplicationContext(), ChatActivity.class);
92         intent.putExtra(Constants.KEY_USER,user);
93         startActivity(intent);
94         finish();
95     }
96 }
复制代码

 

posted @   新晋软工小白  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示