用于android消息传递的SQLitedb实现

时间:2016-07-24 16:28:49

标签: android android-sqlite

我正在Android中开发一个消息传递应用程序。当我发送消息时,我将消息存储在sqlite db insert()中。我将它存储为包含发送者,接收者,消息的对象。

现在,当我在onCreateView()创建片段时,我会使用get恢复它。问题是我不知道如何为我的例子实现这个get。这是我的代码。

在我的Fragment

public void sendTextMessage(View v) {
        String message = msg_edittext.getEditableText().toString();
        ChatMessage chatMessage = new ChatMessage(message,true);
        chatMessage.body = message;
        Log.d("hi","Inside3");
            localstoragehandler.insert("me", "receiver", chatMessage.body.toString());
            msg_edittext.setText("");
            chatAdapter.add(chatMessage);
            chatAdapter.notifyDataSetChanged();
         }

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
    localstoragehandler = new LocalStorageHandler(getActivity());
    dbCursor = localstoragehandler.get("receiver", "me");
        Log.d("hi","Store0");
        if (dbCursor.getCount() > 0){
            Log.d("hi","Store1");
            int noOfScorer = 0;
            dbCursor.moveToFirst();
            while ((!dbCursor.isAfterLast())&&noOfScorer<dbCursor.getCount())
            {
                Log.d("hi","Store2" + dbCursor.getString(3));
                noOfScorer++;
                chatAdapter.addmsg(dbCursor.getString(3));
                dbCursor.moveToNext();
            }
        }
        localstoragehandler.close();
    }

创建片段后,我只收到最后一条消息。这意味着 - 例如我发送了 -

Hi
How
Are 
You

创建片段后,我将其作为 -

   You
   You
   You
   You

这是我的chatAdapter方法 -

public void add(ChatMessage object) {
        chatMessageList.add(object);
        notifyDataSetChanged();
    }

    public void addmsg(ChatMessage msg) {
        Log.d("hi","Store3" + msg);
        chatMessageList.add(msg);
        Log.d("hi","Store4" + chatMessageList);
        notifyDataSetChanged();
        chatMessageList.clear();
    }

2 个答案:

答案 0 :(得分:0)

您是否尝试过调用ChatMessage chatMessage = new ChatMessage(message,true); 外地的功能? 在我之前帮助我的过程中,创建新实例会有所帮助!

ChatMessage chatmessage;
public void sendTextMessage(View v) {
chatmessage = new Chatmessage(....)
//.....
}

答案 1 :(得分:0)

一个简单但草率的修复方法是删除while循环,只看到第一个结果,看你如何多次检索正确的结果。 如果没有看到你的&#34;得到什么,我就无法帮助你。 mthod实际上在做。