Обновление сообщений без возврата к намерениям userList - PullRequest
0 голосов
/ 25 марта 2020

Привет, я ищу способ обновления списка сообщений от 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();
            }
        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...