我有两项活动,即MainActivity
和MyContactsActivity
。 MainActivity
主持三个fragments
,其中一个ListView
。 MyContactsActivity
有一个联系人列表。我想要实现的是,当用户点击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;
}
}
任何人都可以帮我解决这个问题????