嗨我想获取检查的项目和存储在数据库中,但是当我点击按钮保存以获取项目的大小检查得到每次大小为零。当点击列表中的项目时,它只会检查项目的唯一大小,但如果项目未被检查,仍然是。 所以它为我创造的问题帮助我谢谢。 这里是我的代码是如何获取从列表视图中检查的选中项目?
CustomAdapter.java
public class CustomAdapter extends ArrayAdapter<ContactDetails>{
List<ContactDetails> listcontacts=null;
private LayoutInflater mInflater=null;
private SparseBooleanArray mSelectedItemsIds;
public CustomAdapter(Activity context, List<ContactDetails> list) {
super(context, 0);
mInflater = context.getLayoutInflater();
mSelectedItemsIds = new SparseBooleanArray(list.size());
this.listcontacts=list;
}
@Override
public int getCount() {
return listcontacts.size();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = null;
if (convertView == null) {
view = mInflater.inflate(R.layout.contacts_row, null);
final ViewHolder viewHolder = new ViewHolder();
viewHolder.txtname = (TextView) view.findViewById(R.id.textView_name);
viewHolder.txtphonenum = (TextView) view.findViewById(R.id.textView_phonenum);
viewHolder.checkbox = (CheckBox) view.findViewById(R.id.checkBox_check);
viewHolder.checkbox.setFocusable(false);
viewHolder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
ContactDetails element = (ContactDetails) viewHolder.checkbox.getTag();
element.setSelected(buttonView.isChecked());
}
});
view.setTag(viewHolder);
viewHolder.checkbox.setTag(listcontacts.get(position));
} else {
view = convertView;
((ViewHolder) view.getTag()).checkbox.setTag(listcontacts.get(position));
}
ViewHolder holder = (ViewHolder) view.getTag();
holder.txtname.setText(listcontacts.get(position).getName());
holder.txtphonenum.setText(listcontacts.get(position).getPhonenumber());
holder.checkbox.setChecked(listcontacts.get(position).isSelected());
return view;
}
private static class ViewHolder {
TextView txtname;
TextView txtphonenum;
CheckBox checkbox;
}
}
MuListview类是
public class AddChoiceContactList extends Activity implements OnClickListener, OnItemClickListener{
private ListView listview=null;
private Context context=null;
private DataBaseHelper db=null;
CustomAdapter adapter=null;
private Button btnsave=null;
List<ContactDetails> list=new ArrayList<ContactDetails>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.choicelist);
context=this;
listview =(ListView)findViewById(R.id.listView_choice);
btnsave=(Button)findViewById(R.id.button_save);
btnsave.setOnClickListener(this);
listview.setOnItemClickListener(this);
}
@Override
protected void onResume() {
super.onResume();
list=db.GetDataContacts();
if(list.size()>0){
//listview=getListView();
Toast.makeText(context, "size is: "+list.size(), Toast.LENGTH_LONG).show();
adapter=new CustomAdapter(AddChoiceContactList.this, list);
listview.setAdapter(adapter);
listview.setItemsCanFocus(false);
listview.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
}
else{
Toast.makeText(context, "No Contacts Add contats plz!", Toast.LENGTH_LONG).show();
}
}
@Override
public void onClick(View arg0) {
SparseBooleanArray checked=listview.getCheckedItemPositions();
// here m getting size zero when checked then Toast.makeText(context, "checked size is: "+checked.size(), Toast.LENGTH_LONG).show();
ArrayList<UpdatedContact> selectedItems = new ArrayList<UpdatedContact>();
for (int i = 0; i < checked.size(); i++) {
int position = checked.keyAt(i);
if (checked.valueAt(i)){
ContactDetails detils=adapter.getItem(position);
}
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
}
}
是项目检查? –
当复选框检查,然后仍然给零大小 –
它给予大小,当ckick在物品上,并使chekbox检查,然后它给的大小,但是当没有使物品点击和检查,然后它给零的大小 –