你的位置:首页 > 操作系统

[操作系统]硅谷社交14


1)页面布局

<?

2)获取好友列表

// 获取所有联系人的数据List<UserInfo> contacts = Model.getInstace().getDbManager().getContactTableDao().getContacts();mPicks = new ArrayList<>();// 校验if(contacts != null && contacts.size() >= 0) {	// 将联系人信息转换为选择联系人bean信息	PickContactInfo pickContactInfo = null;	for (UserInfo contact: contacts){		pickContactInfo = new PickContactInfo(contact, false);		mPicks.add(pickContactInfo);	}}

3)初始化listview

// 创建适配器mPickContactsAdapter = new PickContactsAdapter(PickContactsActivity.this, mPicks, mExistingMembers);// 添加适配器lv_pick_contacts.setAdapter(mPickContactsAdapter);

4)Listview适配器

public class PickContactsAdapter extends BaseAdapter {  private Context mContext;  private List<PickContactInfo> mPicks = new ArrayList<>();  private List<String> mExistingMembers = new ArrayList<>();  public PickContactsAdapter(Context context , List<PickContactInfo> picks,List<String> existingMembers) {    mContext = context;    if(picks != null && picks.size() >= 0) {      mPicks.clear();      mPicks.addAll(picks);    }    // 接受群中已经存在的群成员的环信id    if(existingMembers != null && existingMembers.size() >=0 ) {      mExistingMembers.clear();      mExistingMembers.addAll(existingMembers);    }  }  // 获取选中的联系人  public List<String> getAddMembers(){    // 准备一个要返回的数据集合    List<String> names = new ArrayList<>();    // 遍历集合 选择出选中状态的联系人    for (PickContactInfo pick: mPicks){      if(pick.isChecked()) {        names.add(pick.getUser().getName());      }    }    return names;  }  @Override  public int getCount() {    return mPicks == null? 0:mPicks.size();  }  @Override  public Object getItem(int position) {    return mPicks.get(position);  }  @Override  public long getItemId(int position) {    return position;  }  @Override  public View getView(int position, View convertView, ViewGroup parent) {    // 创建或获取viewholder    ViewHolder holder = null;    if(convertView == null) {      holder = new ViewHolder();      convertView = View.inflate(mContext, R.layout.item_pick_contacts, null);      holder.tv_name = (TextView) convertView.findViewById(R.id.tv_item_pick_contacts_name);      holder.cb_checked = (CheckBox) convertView.findViewById(R.id.cb_item_pick_contacts);      convertView.setTag(holder);    }else {      holder = (ViewHolder) convertView.getTag();    }    // 获取当前item数据    PickContactInfo pickContactInfo = mPicks.get(position);    // 显示数据    holder.tv_name.setText(pickContactInfo.getUser().getName());    holder.cb_checked.setChecked(pickContactInfo.isChecked());    if(mExistingMembers.contains(pickContactInfo.getUser().getHxId())) {      holder.cb_checked.setChecked(true);      pickContactInfo.setIsChecked(true);    }    // 返回view    return convertView;  }  static class ViewHolder{    TextView tv_name;    CheckBox cb_checked;  }}


5)Listview条目的点击事件

// listView团队item点击事件处理lv_pick_contacts.setOnItemClickListener(new AdapterView.OnItemClickListener() {	@Override	public void onItemClick(AdapterView<?> parent, View view, int position, long id) {		// 获取当前item的checkbox对象		CheckBox cb_item_pick_contacts = (CheckBox) view.findViewById(R.id.cb_item_pick_contacts);		// 设置状态		cb_item_pick_contacts.setChecked(!cb_item_pick_contacts.isChecked());//        cb_item_pick_contacts.toggle();		// 更新数据		PickContactInfo pickContactInfo = mPicks.get(position);		pickContactInfo.setIsChecked(cb_item_pick_contacts.isChecked());		// 刷新列表数据		mPickContactsAdapter.notifyDataSetChanged();	}});


6)保存按钮点击事件

// 保存按钮的点击监听处理tv_pick_contacts_save.setOnClickListener(new View.OnClickListener() {	@Override	public void onClick(View v) {		// 获取被选择的联系人		List<String> addMembers = mPickContactsAdapter.getAddMembers();		// 设置数据准备返回创建群页面		Intent intent = new Intent();		intent.putExtra("members", addMembers.toArray(new String[0]));		setResult(RESULT_OK, intent);		// 结束当前页面		finish();	}});