Вы должны сделать это в своем методе getview()
.
Пример кода из vogella
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = null;
if (convertView == null) {
LayoutInflater inflator = context.getLayoutInflater();
view = inflator.inflate(R.layout.yourlayout, null);
final ViewHolder viewHolder = new ViewHolder();
viewHolder.checkbox = (CheckBox) view.findViewById(R.id.check);
viewHolder.checkbox
.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
Model element = (Model) viewHolder.checkbox
.getTag();
element.setSelected(buttonView.isChecked());
}
});
view.setTag(viewHolder);
viewHolder.checkbox.setTag(list.get(position));
} else {
view = convertView;
((ViewHolder) view.getTag()).checkbox.setTag(list.get(position));
}
ViewHolder holder = (ViewHolder) view.getTag();
holder.checkbox.setChecked(list.get(position).isSelected());
return view;
}
}
Более подробно см here.
Надеюсь, это поможет вам.
Вы получите позицию списка в методе getView вашего пользовательского адаптера. сделайте это там. –
Как я могу вызвать метод getview из основного вида деятельности? –
Попробуйте указанную ссылку http://stackoverflow.com/questions/6048339/android-listview-checkbox-checked-unintentionally – Amit