首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用call BroadCastReceiver更新BroadCastReceiver

用call BroadCastReceiver更新BroadCastReceiver
EN

Stack Overflow用户
提问于 2016-06-20 17:48:25
回答 1查看 2.5K关注 0票数 0

我的片段中有一个回收器视图,我希望每次在广播接收器中推送消息时更新我的回收器视图,.My问题是当接收者调用时,它用以前的项目替换新的项目,但是我想创建新的行,以前的项目仍然存在。我找了很多东西,但没有成功。这是我的片段,里面有广播接收器。

代码语言:javascript
复制
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();


}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-20 17:55:37

这是因为每次接收广播时都要创建一个新的results ArrayList和新的适配器。您需要在广播接收器范围之外创建数组列表和适配器。然后,只需在得到广播时添加到数组列表中即可。然后调用适配器上的notifyDataSetChanged,让它更新UI。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37928748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档