Мне нужна помощь в получении данных с помощью адаптера firebase recycleview. Я пробовал много способов, но я не могу получить данные.
Фрагмент моего основного класса выглядит так.
public class AllUsers extends AppCompatActivity {
RecyclerView recyclerView;
Query databaseReference;
FirebaseRecyclerOptions<Users> options;
FirebaseRecyclerAdapter<Users, UsersViewHolder> firebaseRecyclerAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_all_users);
recyclerView = (RecyclerView) findViewById(R.id.allusers_list);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
databaseReference = FirebaseDatabase.getInstance().getReference("Users");
}
@Override
protected void onStart() {
Log.d("started","YES");
super.onStart();
options = new FirebaseRecyclerOptions.Builder<Users>().setQuery(databaseReference,Users.class).build();
firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Users, UsersViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull UsersViewHolder holder, int position, @NonNull Users model) {
Log.d("name : ", model.getName());
holder.setname(model.getName());
}
@NonNull
@Override
public UsersViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.activity_all_users, viewGroup, false);
return new UsersViewHolder(view);
}
};
firebaseRecyclerAdapter.startListening();
recyclerView.setAdapter(firebaseRecyclerAdapter);
}
}
}
Усервиевхолдеркласс:
public class UsersViewHolder extends RecyclerView.ViewHolder {
View view;
public UsersViewHolder(@NonNull View itemView) {
super(itemView);
view = itemView;
}
public void setname (String name) {
TextView n = view.findViewById(R.id.singleusername);
n.setText(name);
}
}
Класс пользователя:
public class Users {
public String name;
public String status;
public String image;
public String thumb_image;
public Users() {}
public Users(String name, String status, String image, String thumb_image) {
this.name = name;
this.status = status;
this.image = image;
this.thumb_image = thumb_image;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public String getThumb_image() {
return thumb_image;
}
public void setThumb_image(String thumb_image) {
this.thumb_image = thumb_image;
}
}
Когда я запускаю приложение, вместо данных отображается пустой экран, поэтому, пожалуйста, скажите мне, в чем заключается ошибка. Это для версии firebaseUI 3.0+.
Insted я получаю эту ошибку:
Когда я добавляю startlistining в firebaseRecyclerAdapter, он показывает следующую ошибку.
2019-02-11 19:40:03.027 9059-9059/com.example.bhaskar.chat D/AndroidRuntime: Shutting down VM
2019-02-11 19:40:03.027 9059-9059/com.example.bhaskar.chat E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.bhaskar.chat, PID: 9059
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.bhaskar.chat/com.example.bhaskar.chat.AllUsers}: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.firebase.ui.database.FirebaseRecyclerAdapter.startListening()' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.firebase.ui.database.FirebaseRecyclerAdapter.startListening()' on a null object reference
at com.example.bhaskar.chat.AllUsers.onStart(AllUsers.java:51)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1248)
at android.app.Activity.performStart(Activity.java:6679)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2609)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
at android.app.ActivityThread.-wrap12(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
2019-02-11 19:40:03.103 9059-9186/com.example.bhaskar.chat D/NetworkSecurityConfig: No Network Security Config specified, using platform default
Возможно, вы не вызываете startListening(), чтобы начать прослушивание данных
firebaseRecyclerAdapter.startListening();
После добавления startlistner() изменений нет....
Вставленное приложение просто вылетает
Конечно, ваше приложение будет падать. потому что вы вызываете метод перед созданием объекта. Вы должны вызвать метод для созданного объекта.
Если это решение, вопрос будет дубликатом stackoverflow.com/questions/47228262/…, поэтому я пометил его как таковой.