RecyclerView не заполняется элементами из firebase, просто пустой страницей действий - PullRequest
0 голосов
/ 22 апреля 2020

Я все еще относительно новичок в Android и в firebase, и пытаюсь заполнить представление recycler из базы данных firebase, но по некоторым причинам, которые я не могу получить, представление не заполняется. Действие загружается, но все, что я вижу, является пустым страница активности. Я хотел бы заполнить эти представления, используя данные из базы данных Firebase, просто чтобы получить три данных (имя, адрес электронной почты, телефоны) пользователей.

public class TestUsersActivity extends AppCompatActivity {
public TextView mname,email,phone;
private RecyclerView recyclerView;
FirebaseAuth mAuth;
DatabaseReference mDatabase;
private FirebaseRecyclerAdapter adapter;
private LinearLayoutManager linearLayoutManager;

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

    recyclerView = findViewById(R.id.listuser);
    mDatabase = FirebaseDatabase.getInstance().getReference().child("Users");
    linearLayoutManager = new LinearLayoutManager(getApplicationContext());
    linearLayoutManager.setReverseLayout(true);
    linearLayoutManager.setStackFromEnd(true);
    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(linearLayoutManager);

    fetch();

}

private void fetch() {

    FirebaseRecyclerOptions<Users> options = new FirebaseRecyclerOptions.Builder<Users>()
            .setQuery(mDatabase,Users.class)
            .build();

    adapter = new FirebaseRecyclerAdapter<Users, ViewHolder>(options) {
        @Override
        protected void onBindViewHolder(@NonNull ViewHolder myViewHolder, int i, @NonNull Users users) {
            myViewHolder.setName(users.getFname() + " "+ users.getLname());
            myViewHolder.setEmail(users.getEmail());
            myViewHolder.setphone(users.getPhonenos());


        }

        @NonNull
        @Override
        public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.user_list_row,parent, false);
            ViewHolder viewHolder = new ViewHolder(view);
            return viewHolder;
        }

        @Override
        public void onDataChanged() {
            super.onDataChanged();
        }
    };

    recyclerView.setAdapter(adapter);
    adapter.startListening();
}

@Override
protected void onStop() {
    super.onStop();
    adapter.stopListening();
}

    public class ViewHolder extends RecyclerView.ViewHolder {

        public ViewHolder(View itemView) {
            super(itemView);
            mname = itemView.findViewById(R.id.name);
            email = itemView.findViewById(R.id.email);
            phone = itemView.findViewById(R.id.phoneNos);
        }

        public void setName(String string) {
            mname.setText(string);
        }


        public void setEmail(String string) {
            email.setText(string);
        }
        public void setphone(String string){
            phone.setText(string);
        }
    }

}

Ниже мой модельный класс, от которого я хочу получить только имя, адрес электронной почты и номера телефонов.

public class Users {
private String fname;
private String lname;
private String email;
private String phonenos;
private String jobTitle;
private String dateCreated;
private String lastlogin;

public Users(){

}


public Users(String fname, String lname, String email, String phonenos, String jobTitle, String dateCreated, String lastlogin) {
    this.fname = fname;
    this.lname = lname;
    this.email = email;
    this.phonenos = phonenos;
    this.jobTitle = jobTitle;
    this.dateCreated = dateCreated;
    this.lastlogin = lastlogin;

}

public String getFname() {
    return fname;
}

public void setFname(String fname) {
    this.fname = fname;
}

public String getLname() {
    return lname;
}

public void setLname(String lname) {
    this.lname = lname;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}


public String getPhonenos() {
    return phonenos;
}

public void setPhonenos(String phonenos) {
    this.phonenos = phonenos;
}

public String getJobTitle() {
    return jobTitle;
}

public void setJobTitle(String jobTitle) {
    this.jobTitle = jobTitle;
}

public String getDateCreated() {
    return dateCreated;
}

public void setDateCreated(String dateCreated) {
    this.dateCreated = dateCreated;
}

public String getLastlogin() {
    return lastlogin;
}

public void setLastlogin(String lastlogin) {
    this.lastlogin = lastlogin;
}

}

enter image description here

1 Ответ

0 голосов
/ 22 апреля 2020

Я не знаю, нужно ли передавать запрос вместо ссылки на базу данных

сделать запрос переменной члена

......
private Query query;
......

do это:

query = FirebaseDatabase.getInstance().getReference().child("Users");

и передайте его следующим образом

FirebaseRecyclerOptions<Users> options = new FirebaseRecyclerOptions.Builder<Users>()
        .setQuery(query,Users.class)
        .build();

ТАКЖЕ УБЕДИТЕСЬ, ЧТО ВАШИ ПРАВИЛА БЕЗОПАСНОСТИ ПОЖАРНОЙ БАЗЫ НЕ НАСТРОЕНЫ, ЧТОБЫ ПРОЧИТАТЬ ЛОЖЬ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...