2016-07-24 91 views
0

我正在開發Android中的消息傳遞應用程序。當我發送消息時,我將此消息存儲在sqlite dbinsert()。我將它作爲包含發件人,收件人,消息的對象存儲。用於android消息傳遞的SQLitedb實現

現在,當我的片段在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 

這裏是我的​​方法 -

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(); 
    } 

回答

0

你試過打電話ChatMessage chatMessage = new ChatMessage(message,true); outsite的功能? 刷新新實例可以提供幫助,因爲它可以幫助我!

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

一個簡單但馬虎的修復方法是去除while循環,只有第一個結果看到你如何多次檢索正確的結果。 沒有看到你的「得到」方法實際上在做什麼,我無法幫助你。