Base アダプターには、複数のビューとチェックボックスが含まれています。
チェックボックスを選択すると、1つの位置が取得され、スクロールして同じチェックボックスを選択解除すると、別の位置が取得されますが、同じ位置が必要です..これを取得するには?
これは、アダプタがビューをリサイクルしていて、適切に処理していないためです。setChoiceMode(ListView.CHOICE_MODE_MULTIPLE)
またはを使用していることを確認してくださいsetChoiceMode(ListView.CHOICE_MODE_SINGLE)
カスタムリストアイテムを使用している場合は、私のチュートリアルを参照してください:アイテムをチェックする機能を備えたカスタムリストビュー
アダプタークラスで
public View getView(final int position, final View convertView, ViewGroup parent) {
View row = super.getView(position, convertView, parent);
if (row == null)
{
LayoutInflater inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(R.layout.reports_list, null);
}
CheckBox cBox=(CheckBox)row.findViewById(R.id.cb1);
cBox.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if(cBox.isChecked())
{
System.out.println("position "+reportslistview.getPositionForView(cBox));
}
}
});