[英]Fragment ListView with Checkbox strange behavior
我有一个Fragment
内部扩展了FragmentList
Checkbox
的ListView
。 奇怪的行为是单击一个项目时会检查多个项目。 奇怪的是,滚动列表时,某些项目会自动被选择或取消选择,而我没有设置ScrollListener
。
这是代码:
@Override
public void onStart() {
super.onStart();
getListView().setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
CheckBox mCheckBox = (CheckBox) view.findViewById(R.id.chk);
if (mCheckBox.isChecked()) {
mCheckBox.setChecked(false);
getListView().setItemChecked(i, false);
} else {
mCheckBox.setChecked(true);
getListView().setItemChecked(i, true);
}
mCallback.onArticleSelected(i, isChoice);
}
});
}
必填: 图片http://windrealm.org/tutorials/android/planets-fragmentactivity.png
滚动时, ListView
的项目会回收。 您应该将一个boolean
参数(isChecked)放入ListView
行对象,然后在getView方法中,您应该使用该boolean
参数初始化CheckBox
。 例如:
假设您的行对象:
public class Trial{
public String title;
public boolean isChecked;
}
在ListView
适配器的getView方法中,应检查对象的isChecked
参数:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
View view = inflater.inflate(R.layout.your_listview_item, parent, false);
Trial item = items.get(position);
yourHolder.checkBox = (CheckBox) view.findViewById(R.id.chk);
yourHolder.checkBox.setChecked(item.isChecked);
return view;
}
祝好运。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.