无法从其他活动更新Fragment(带有视图寻呼机)中的ListView

时间:2016-08-19 17:59:54

标签: java android listview android-fragments

我有两项活动,即MainActivityMyContactsActivityMainActivity主持三个fragments,其中一个ListViewMyContactsActivity有一个联系人列表。我想要实现的是,当用户点击MyContactsActivity中的任何列表项时,将调用onItemClickListener,这将获取该项目的数据并使用intent广播数据。 Fragment ListView broadcast intent会收到ArrayList并将数据添加到自定义ListView,而后者又会更新片段中的ArrayList

现在问题是虽然我在fragment的{​​{1}}中收到了必需的数据,但片段中的ListView没有得到更新(没有获得任何视图)。

这是我的OnCreateView()

[....]
usersListView = (ListView) rootView.findViewById(R.id.usersListView);
fragMsgContacts = new ArrayList<>();
userContactReceiver = new UserContactReceiver();
contactsInfoAdapter = new ContactsInfoAdapter(getActivity());
usersListView.setAdapter(contactsInfoAdapter);

这是我的BroadcastReceiver内部课程:

 private class UserContactReceiver extends BroadcastReceiver {

            @Override
            public void onReceive(Context context, Intent intent) {
                if (intent != null) {

                    String name = intent.getStringExtra(Constants.STRING_NAME);
                    String phone = intent.getStringExtra(Constants.STRING_PHONE);
                    String pic = intent.getStringExtra(Constants.STRING_PIC);

                    if (pic != null) {
                        contactsRow = new ContactsRow(name, phone, pic);

                        if (fragMsgContacts.contains(contactsRow)) {
                            Toast.makeText(getActivity().getApplicationContext(), "Contact Already added", Toast.LENGTH_LONG).show();
                        } else {
                            fragMsgContacts.add(contactsRow);
                            contactsInfoAdapter.notifyDataSetChanged();

                    }
                } else {
                    contactsRow = new ContactsRow(name, phone);
                    if (fragMsgContacts.contains(contactsRow)) {
                        Toast.makeText(getActivity().getApplicationContext(), "Contact Already added", Toast.LENGTH_LONG).show();
                    } else {
                        fragMsgContacts.add(contactsRow);
                        contactsInfoAdapter.notifyDataSetChanged();

                    }
                }
            }
        }
    }

这是我的自定义BaseAdapter课程:

private class ContactsInfoAdapter extends BaseAdapter {

        Context ctx;

        public ContactsInfoAdapter(Context context) {
            this.ctx = context;
        }

        @Override
        public int getCount() {
            return fragMsgContacts.size();
        }

        @Override
        public Object getItem(int i) {
            return fragMsgContacts.get(i);
        }

        @Override
        public long getItemId(int i) {
            return i;
        }

        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {

            ContactsViewHolder contactsViewHolder;

            if (view == null) {
                LayoutInflater inflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                view = inflater.inflate(R.layout.contacts_list_item, viewGroup, false);
                contactsViewHolder = new ContactsViewHolder(view);
                view.setTag(contactsViewHolder);

            } else {
                contactsViewHolder = (ContactsViewHolder) view.getTag();
            }

            ContactsRow contactsRow = fragMsgContacts.get(i);
            contactsViewHolder.contact_name.setText(contactsRow.name);
            contactsViewHolder.contact_phone.setText(contactsRow.phone);

            if (contactsRow.photo != null) {
                contactsViewHolder.contact_photo.setImageBitmap(getBitmapFromString(contactsRow.photo));
            } else {
                contactsViewHolder.contact_photo.setImageResource(R.drawable.user_pic_placeholder);
            }

            return view;
        }
    }

任何人都可以帮我解决这个问题????

0 个答案:

没有答案
相关问题