Android 在listview内单击的复选框上设置行背景
我有一个列表视图,每行有2个文本框和1个复选框。 我希望当用户选中该复选框时,可以将预定义的drawable设置为该行的背景Android 在listview内单击的复选框上设置行背景,android,android-listview,android-cursoradapter,Android,Android Listview,Android Cursoradapter,我有一个列表视图,每行有2个文本框和1个复选框。 我希望当用户选中该复选框时,可以将预定义的drawable设置为该行的背景 我曾尝试在我的cusotm光标适配器中的getView方法的Lisnner上执行此操作,但没有成功,请帮助 首先查找复选框id,然后 box.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(
我曾尝试在我的cusotm光标适配器中的getView方法的Lisnner上执行此操作,但没有成功,请帮助 首先查找复选框id,然后
box.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked) {
//set background when checked
}else{
//when unselect checkbox change background
}
}
});
如果此代码有用,则给出+1或接受。首先查找复选框id,然后
box.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked) {
//set background when checked
}else{
//when unselect checkbox change background
}
}
});
如果此代码有用,则给出+1或接受。在
列表适配器中使用此getView
方法:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.list_item, null);
CheckBox checkBox = (CheckBox) view.findViewById(R.id.check);
checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
View row = (View) buttonView.getParent();
if (isChecked) {
row.setBackgroundResource(R.drawable.list_item_background_checked);
} else {
row.setBackgroundResource(android.R.color.transparent);
}
}
});
return view;
}
在ListAdapter
中使用此getView
方法:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) mContext
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.list_item, null);
CheckBox checkBox = (CheckBox) view.findViewById(R.id.check);
checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
View row = (View) buttonView.getParent();
if (isChecked) {
row.setBackgroundResource(R.drawable.list_item_background_checked);
} else {
row.setBackgroundResource(android.R.color.transparent);
}
}
});
return view;
}
现在,如果我不仅想在单击复选框时设置背景,而且还想设置已选中该复选框的所有行,我将如何做到这一点?这应该是隐式的。当以编程方式选中/取消选中复选框时,onCheckedChangedListener
也会执行。请接受答案。现在,如果我不仅希望在单击复选框时设置背景,而且还希望设置已选中复选框的所有行,我将如何做到这一点?这应该是隐式的。当以编程方式选中/取消选中复选框时,onCheckedChangedListener
也会执行。请接受答案。