【发布时间】:2014-08-21 08:34:07
【问题描述】:
我在 Listview 中有联系人列表,每个联系人都有复选框。我想将选中的联系人数量限制为 5。在遵循此 link 之后,我设法保留了复选框的状态,但无法保留联系人的数量检查。
这是我迄今为止尝试过的:
public View getView(final int position, View convertView, ViewGroup parent) {
final Holder holder;
Bitmap bitmap = null;
if(convertView == null)
{
holder = new Holder();
convertView = layoutInflater.inflate(R.layout.fetch_single_contact, null);
holder.name = (TextView) convertView.findViewById(R.id.sc_name);
holder.number = (TextView) convertView.findViewById(R.id.sc_number);
holder.name.setTypeface(mTypeface);
holder.number.setTypeface(mTypeface);
holder.select = (CheckBox)convertView.findViewById(R.id.contact_checkbox_btn);
holder.contact_img = (ImageView)convertView.findViewById(R.id.contact_img);
holder.select.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
int getPosition = (Integer)buttonView.getTag();
contactsList.get(getPosition).setSelected(buttonView.isChecked());
if(isChecked)
{
total_contacts_selected ++;
}
else if(!isChecked)
{
total_contacts_selected--;
}
if(total_contacts_selected > 5)
{
Log.i("ContactsAdapter", "5 Contacts already selected");
Toast.makeText(getApplicationContext(), "5 Contacts already selected", Toast.LENGTH_LONG).show();
buttonView.setChecked(false);
total_contacts_selected--;
}
else
{
contactsList.get(getPosition).setSelected(buttonView.isChecked());
}
}
});
convertView.setTag(holder);
convertView.setTag(R.id.sc_name, holder.name);
convertView.setTag(R.id.contact_checkbox_btn, holder.select);
}
else{
holder = (Holder) convertView.getTag();
}
holder.name.setText(contactsList.get(position).getName());
holder.number.setText(contactsList.get(position).getNumber());
try {
bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), Uri.parse(contactsList.get(position).getImgUri()));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
holder.contact_img.setImageBitmap(getRoundedCornerBitmap(bitmap, 100));
holder.select.setTag(position);
holder.select.setChecked(contactsList.get(position).isSelected());
return convertView;
}
【问题讨论】:
标签: android listview checkbox android-listview