1.item布局实现Checkable接口
public class ChoiceView extends LinearLayout implements Checkable {
TextView tvRepeatTitle;
ImageView ivCheckIcon;
public ChoiceView(Context context) {
super(context);
View.inflate(context, R.layout.item_repeat_item,
this);
tvRepeatTitle = (TextView) findViewById(R.id.tv_repeat_title);
ivCheckIcon = (ImageView) findViewById(R.id.iv_check_icon);
}
public void setText(String text) {
tvRepeatTitle.setText(text);
}
@Override
public void setChecked(
boolean checked) {
if (checked) {
ivCheckIcon.setVisibility(View.VISIBLE);
}
else {
ivCheckIcon.setVisibility(View.INVISIBLE);
}
}
@Override
public boolean isChecked() {
return ivCheckIcon.getVisibility() == VISIBLE;
}
@Override
public void toggle() {
Log.w(
"ChoiceView",
"toggle()");
}
}
2.将ListView设置为CHOICE_MODE_SINGLE
lvRepeat.setChoiceMode(AbsListView.CHOICE_MODE_SINGLE);
ListAdapter listAdapter =
new ArrayAdapter<String>(
this, R.layout.item_repeat_item, repeatArray) {
@Override
public View
getView(
int position, View convertView, ViewGroup parent) {
final ChoiceView view;
if (convertView ==
null) {
view =
new ChoiceView(getApplicationContext());
}
else {
view = (ChoiceView) convertView;
}
view.setText(getItem(position));
return view;
}
};
lvRepeat.setAdapter(listAdapter);