我有一个用于该行的类,它将RelativeLayout
一些布局扩展并膨胀到自我。CheckBox
还设置了检查状态侦听器。
public class LayersListRow extends RelativeLayout {
public LayersListRow (Context context, final GITuple tuple) {
super(context);
LayoutInflater.from(context).inflate(R.layout.layers_list_item, this, true);
...
CheckBox checkbox = (CheckBox)findViewById(R.id.layers_list_item_switch);
checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged (CompoundButton buttonView, boolean isChecked) {
...
}
});
}
...
}
我有一个 custom ArrayAdapter
,里面装满了这个类的一些对象。我也想将它们用作视图。
public class LayersAdapter extends ArrayAdapter<LayersListRow> {
@Override
public View getView (int position, View convertView, ViewGroup parent) {
return getItem(position);
}
public LayersAdapter (Context context, int resource, int textViewResourceId) {
super(context, resource, textViewResourceId);
}
}
但是当我将此适配器设置为我ListView
的CheckBox
监听器时不起作用。但是对于向下滚动显示的项目,它工作正常。
如果我return getItem(position);
在getView
方法中替换为
if (null == convertView)
return getItem(position);
return convertedView;
然后对于列表侦听器中最初可见的所有项目都很好,但是当我尝试滚动时,我得到了错误的项目(又是第一个),ListView
冻结并且没有响应。
为什么会发生这种情况,我应该如何让它正常工作?