0

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 が反映されていない理由は何ですか?

前もって感謝します!

4

0 に答える 0