0

我有一個回收視圖在我的片段,我想更新我的回收站查看廣播接收器。我的問題ocuured每次推送消息時接收呼叫,它與先前的項目替換新的項目,但我想創建新行並且以前的項目仍然存在。我搜索了很多,但沒有成功。這裏是一個具有廣播接收器在它更新RecyclerView與呼叫廣播接收器

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View drawer = inflater.inflate(R.layout.fragment_notif_list, container, false); 
    rv = (RecyclerView) drawer.findViewById(R.id.recyclerview); 
    rv.setHasFixedSize(true); 
    mLayoutManager = new LinearLayoutManager(getActivity()); 
    rv.setLayoutManager(mLayoutManager); 
    prefs = getActivity().getSharedPreferences(Config.SHARED_PREF_NAME, Context.MODE_PRIVATE); 


    mRegistrationBroadcastReceiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 

      if (intent.getAction().equals(Config.PUSH_NOTIFICATION)) { 
       // new push notification is received 
       Toast.makeText(getActivity(), "Push notification is received!", Toast.LENGTH_LONG).show(); 

       message = intent.getStringExtra("message"); 
       title = intent.getStringExtra("title"); 
       timestamp = intent.getStringExtra("timestamp"); 
       Log.d("message -->", message); 
       Log.d("title -->", title); 
       Log.d("time -->", timestamp); 
       MessageObj messageObj = new MessageObj(message,title,timestamp); 

       getDataSet(messageObj.getMessage(),messageObj.getTitle(),messageObj.getDate()); 

      } 
     } 
    }; 

    return drawer; 
} 


private void getDataSet(String message,String title,String date) { 
    ArrayList results = new ArrayList<MessageObj>(); 

     MessageObj obj = new MessageObj(message,title,date); 
     Log.d("result size :",results.size()+""); 
     results.add(results.size(),obj); 
    mAdapter = new MessageAdapter(getActivity(), results); 
    rv.setAdapter(mAdapter); 
    mAdapter.notifyDataSetChanged(); 


} 

回答

3

這是因爲你正在創建一個新的results ArrayList和新的適配器每次接收廣播時我的片段。您需要在廣播接收機的範圍之外創建一次數組列表和適配器。然後,只需在收到廣播時添加到數組列表中。然後在適配器上調用notifyDataSetChanged以更新UI。

+0

你救了我的生活,謝謝;) – hdiz

+0

請問一個問題。如果我關閉應用程序所有項目刪除如何保存它們?我應該使用sharedpreference嗎? – hdiz

+0

這是一個糟糕的做法存儲數據的偏好,數據檢索速度較慢,而不是指數,所以是更好地存儲在數據庫中的數據,或者如果它只是幾行字,然後放入一個文件中。 –

相關問題