У меня есть проблема с пользовательским адаптером с помощью CheckBox. При щелчке я создаю массив, содержащий некоторые данные, и это работает отлично, но в моем держателе есть также «поле», которое содержит число, и я хотел бы поместить это число и в конечном итоге добавить его к предыдущему выбору, если пользователь проверяет больше строк списка. «holder.durata» содержит тот номер, который я должен использовать. Может кто-то помогает мне это сделать? Вот мой адаптерПользовательский адаптер, значение суммы на CheckBox click
public class NuovoAdapter extends BaseAdapter {
private LayoutInflater layoutinflater;
private Context context;
ArrayList<HashMap<String, String>> dataList;
ArrayList<HashMap<String,String>> list_selected;
boolean [] itemChecked;
boolean[] checkBoxState;
public NuovoAdapter(Context context, ArrayList<HashMap<String, String>> list_serv) {
super();
this.context = context;
this.dataList = list_serv;
itemChecked = new boolean [dataList.size()];
list_selected = new ArrayList<HashMap<String, String>>();
checkBoxState=new boolean[dataList.size()];
list_selected.clear();
}
@Override
public int getCount() {
return dataList.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
final ViewHolder holder;
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = inflater.inflate(R.layout.prenota_serv, null);
holder = new ViewHolder();
holder.id = (TextView) convertView.findViewById(R.id.et_id);
holder.service = (TextView) convertView.findViewById(R.id.et_serv);
holder.costo = (TextView) convertView.findViewById(R.id.et_costo);
holder.durata = (TextView) convertView.findViewById(R.id.et_dur);
holder.Ceck = (CheckBox) convertView.findViewById(R.id.checkBox);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.id.setText(dataList.get(position).get("ID"));
holder.service.setText(dataList.get(position).get("Descrizione"));
holder.costo.setText(dataList.get(position).get("Costo"));
holder.durata.setText(dataList.get(position).get("Durata_m"));
//holder.Ceck.setChecked(false);
holder.Ceck.setChecked(checkBoxState[position]);
holder.Ceck.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if(((CheckBox)v).isChecked())
checkBoxState[position]=true;
else
checkBoxState[position]=false;
}
});
holder.Ceck.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
HashMap<String, String> data = dataList.get(position);
if (isChecked) {
addToSelected(data);
} else {
removeSelected(data);
}
}
});
return convertView;
}
private void addToSelected(HashMap contact){
if(!list_selected.contains(contact))list_selected.add(contact);
}
private boolean removeSelected(HashMap contact){
return list_selected.remove(contact);
}
public ArrayList<HashMap<String, String>> getSelectedItems(){
return list_selected;
}
}
class ViewHolder {
TextView id;
TextView service;
TextView costo;
TextView durata;
CheckBox Ceck;
}
это [ссылка] (http://stackoverflow.com/questions/10911361/how-to-get-selected-list-items-from-a-listview-with-checkbox-and-custom-adapter) может помочь вам – pRaNaY
@pRaNaY Спасибо, я так думаю, но я должен изучить его раньше! Я попытаюсь адаптировать этот пример. – Jayelef
@pRaNaY может быть, похоже, что я хочу сделать, но я не могу применить этот пример, чтобы решить мою проблему. У меня уже есть массив (это list_selected): могу ли я суммировать элементы, называемые «Durata_m»? Есть способ сделать это? – Jayelef