Привет, я пытаюсь создать приложение для чата.В этом процессе Iam пытается извлечь сообщения, хранящиеся в базе данных, но Iam получает исключение ссылки на пустой объект.
Код, который я использовал для добавления сообщений в базу данных:
img_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String msg = text_send.getText().toString();
if(!msg.equals(""))
sendMessage(fuser.getUid(), currUserId, msg);
else
Toast.makeText(MessageActivity.this, "Enter Something",
Toast.LENGTH_SHORT).show();
}
});
private void sendMessage(String sender,String receiver,String message)
{
DatabaseReference reference =
FirebaseDatabase.getInstance().getReference();
HashMap<String,Object>hashMap = new HashMap<>();
hashMap.put("sender",sender);
hashMap.put("receiver",receiver);
hashMap.put("message",message);
reference.child("Chats").push().setValue(hashMap);
}
ПРИМЕЧАНИЕ.часть кода работает нормально.Моя база данных корректно обновляется каждый раз, когда я отправляю сообщение.
После этой части я пытался отображать сообщения пользователей, используя следующий код
DatabaseReference chatref =
FirebaseDatabase.getInstance().getReference().child("Chats");
ArrayList<String> userchats = new ArrayList<>();
listView = findViewById(R.id.listView);
final ArrayAdapter <String> arrayAdapter = new ArrayAdapter<String>
(this,android.R.layout.simple_list_item_1,userchats);
listView.setAdapter(arrayAdapter);
chatref.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot,
@Nullable String s) {
String value = dataSnapshot.getValue().toString();
try {
JSONObject object = new JSONObject(value);
message = object.getString("message");
}
catch (JSONException e) {
e.printStackTrace();
}
userchats.add(message);
arrayAdapter.notifyDataSetChanged();
}
@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot,
@Nullable String s) {
}
@Override
public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(@NonNull DataSnapshot dataSnapshot,
@Nullable String s) {
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
Когда я запускал приложение в данный моментЯ получаю сообщение об ошибке, и моя трассировка стека выглядит следующим образом:
Process: com.kcw.firebasebasics, PID: 10943
java.lang.NullPointerException: Attempt to invoke virtual method
'java.lang.String java.lang.Object.toString()' on a null object
reference at android.widget.ArrayAdapter.
createViewFromResource(ArrayAdapter.java:401)
at android.widget.ArrayAdapter.getView(ArrayAdapter.java:369)
at android.widget.AbsListView.obtainView(AbsListView.java:2346)
at android.widget.ListView.makeAndAddView(ListView.java:1875)
Наконец изображение моей базы данных: