2

Я пытаюсь добавить функцию чата в своем приложении Android с помощью Parse.com. Я использую пользовательский parseQueryAdapter. Проблема в том, что когда я отправляю сообщение или когда получаю новое сообщение, мой адаптер не обновляется. Я постарался добавить иAndroid Parse.com Чат с parseQueryAdapter не обновляется

adapter.notifyDataSetInvalidated(); 
adapter.clear(); 
adapter.loadObjects(); 
adapter.notifyDataSetChanged(); 

в сделанном обратном вызове и даже в специальной кнопке обновления.

Вот как это работает:

  • Мой адаптер устанавливается в пользовательском ListView и запрос устанавливается в конструкторе адаптера
  • Когда я отправляю сообщение, я создаю новый ParseObject (сообщение в моем базы данных), и я сохраняю его в сеансе ParseObject.
  • я сохранить сообщение, то я сохраняю разговор, как с saveInBackground (новый SaveCallback() {...}) и saveEventually (новый SaveCallback() {...})
  • Стараюсь обновить в проделанном обратном вызове

Каждый раз ListView отображает то же самые сообщения, и я должен вернуться к предыдущему фрагменту и повторно открыть фрагмент чата, чтобы увидеть новые сообщения ...

I заметил, что getCount() метод всегда возвращает то, что отображается.

Любое представление о том, как я мог обновить данные своего ListView?

Спасибо!

+0

У меня есть аналогичная проблема, если вы нашли решение, пожалуйста, разместите его ниже. Благодаря! – wheeliez

ответ

0

Проблема заключалась в том, что я получаю список сообщений в цепочке в конструкторе parseQueryAdapter и затем возвращаю запрос. ParseQueryAdapter работает хорошо, показывая мне результат запроса. Если я отправляю сообщение в разговоре, это не влияет на список, сделанный в конструкторе ...

Итак, я добавил столбец в своем сообщении ParseObject и проделал простой whereEqualTo(), чтобы иметь правильные сообщения. Теперь он отлично работает!

+0

Привет, У меня та же проблема, можете ли вы лучше объяснить (может быть, на примере), как вы ее решили? Спасибо – Kurtis92

0

Вот еще несколько объяснений Проблема возникла из жизненного цикла адаптера. У меня было:

constructor { 
    set up the messages list 
    set this list as source of data in query 
    ... 
} 

, когда я пытался обновить данные были обновлены, но список все тот же, так что я получил тот же результат! Как невозможно изменить запрос существующего parseQueryAdapter, я полностью изменил способ получения сообщений с указателем беседы в моем анализируемом объекте. Теперь это простой простой ответный запрос:

ParseQuery<ParseObject> q = new ParseQuery<ParseObject>("Message"); 
q.whereEqualTo("conversationPointer", parseConversationId); 
+0

Итак ... не следует ли использовать ParseQueryAdapter? – Kurtis92

+0

Вы должны использовать его, потому что это очень удобно. У вас есть легкая разбивка на страницы, обновления для ваших данных ... Единственное условие для ее использования заключается в том, что вы можете получить то, что вам нужно показать простым запросом.ParseQueryAdapter - хороший способ отобразить результат запроса в виде списка. – Nebneb

Смежные вопросы