Привет, я ищу способ обновления списка сообщений от 2 человек, проблемы, с которыми я должен go вернуться в свой userListActivity и нажмите на пользователя, с которым я хочу пообщаться, чтобы увидеть обновление или новое сообщение, полученное пользователем, я использую ParseServer для этого приложения
мой класс ChatActivity
String activeUser = "";
ArrayList<String> messages = new ArrayList<>();
ArrayAdapter<String> messagesAdapter;
public void sendMessage(View view){
final EditText chatEditext = findViewById(R.id.messageEditText);
final ParseObject message = new ParseObject("Message");
final String messageContent = chatEditext.getText().toString();
message.put("sender" , ParseUser.getCurrentUser().getUsername());
message.put("recepient",activeUser);
message.put("message",chatEditext.getText().toString());
chatEditext.setText("");
message.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if( e == null){
messages.add(messageContent);
messagesAdapter.notifyDataSetChanged();
}
}
});
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_chat);
Intent intent = getIntent();
activeUser = intent.getStringExtra("username");
setTitle(activeUser);
ListView chatListView = findViewById(R.id.chatListView);
messagesAdapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1, messages);
chatListView.setAdapter(messagesAdapter);
ParseQuery<ParseObject> query1 = new ParseQuery<ParseObject>("Message");
query1.whereEqualTo("sender",ParseUser.getCurrentUser().getUsername());
query1.whereEqualTo("recepient",activeUser);
ParseQuery<ParseObject> query2 = new ParseQuery<ParseObject>("Message");
query2.whereEqualTo("recepient",ParseUser.getCurrentUser().getUsername());
query2.whereEqualTo("sender",activeUser);
List<ParseQuery<ParseObject>> queries = new ArrayList<>();
queries.add(query1);
queries.add(query2);
ParseQuery<ParseObject> query = ParseQuery.or(queries);
query.orderByAscending("createdAt");
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> objects, ParseException e) {
messages.clear();
if(e == null && objects.size() > 0 ){
for(ParseObject object : objects){
String messageContenct = object.getString("message");
if(! object.getString("sender").equals(ParseUser.getCurrentUser().getUsername()) ){
messageContenct = ">"+messageContenct;
}
messages.add(messageContenct);
}
messagesAdapter.notifyDataSetChanged();
}
}
});