Android アプリケーションで Parse を使用してグループ チャットを実装しています。シーンは、送信者がグループにメッセージを送信すると、送信者側の解析ローカルデータストアにラベルを付けてこのメッセージを固定しています。また、1秒ごとにローカルデータストアの解析からデータを取得する自動更新メソッドも配置しました。しかし、問題は pinInBackground メソッドを呼び出すときに、データがアダプターを使用して ListView に入力されていないことです。しかし、saveInBackground と pinInBackground メソッドを一緒に呼び出すと、データが取り込まれます。
localdatastore でデータのサイズも増加していることを確認します。ListViewには反映されません。
localdatastore からデータを取得するために次の方法を使用しています -
private ArrayList<ParseObject> mMessages;
private MyCustomAdapter1 mAdapter;
private ListView lvChat;
private boolean mFirstLoad;
//in onCreate() method
mMessages = new ArrayList<ParseObject>();
lvChat.setTranscriptMode(1);
mFirstLoad = true;
mAdapter = new MyCustomAdapter1(getActivity(), mMessages);
lvChat.setAdapter(mAdapter);
private void receiveChatMessages() {
ParseQuery<ParseObject> query = ParseQuery.getQuery("ChatMessages");
query.orderByAscending("createdAt");
query.fromPin("myLable");
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> list, ParseException e) {
if (e == null) {
mMessages.clear();
mMessages.addAll(list);
mAdapter.notifyDataSetChanged(); // update adapter
// Scroll to the bottom of the list on initial load
if (mFirstLoad) {
lvChat.setSelection(mAdapter.getCount() - 1);
mFirstLoad = false;
}
} else {
Log.d("message", "Error: " + e.getMessage());
}
}
});
}
質問 - saveInBackground メソッドがデータを反映しているのに、pinInBackground が反映されていない理由は何ですか?
前もって感謝します!