私は行のクラスを持っています、それはそれ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) {
...
}
});
}
...
}
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
フリーズして応答しません。
なぜこれが発生し、どのように正しく機能させる必要がありますか?