次のコードスニップを使用する前に、クリックした画像ビューにチェックマークを付け、クリックした画像ビューのチェックを外したい。最後にチェックした位置をmDeviceAdapterに保存します。古い位置のチェックを外そうとすると、部分的に表示されている画像ビューであっても、画像ビューは常にnullになります。目に見えないものだけがリサイクルされると思ったので、私は本当に混乱しています...Androidの初心者とコメントをいただければ幸いです。
public void CheckableImageView#setChecked(boolean checked) {
if (mChecked != checked) {
mChecked = checked;
invalidate();
}
}
mDeviceGallery.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
CheckableImageView viewToCheck = (CheckableImageView) view;
if (!viewToCheck.isChecked()) {
int oldCheckedPosition = mDeviceAdapter
.getCheckedPosition();
mDeviceAdapter.setCheckedPosition(position);
View checkedView = mDeviceGallery
.getChildAt(oldCheckedPosition);
Log.d(TAG, "old position="+oldCheckedPosition + "old view="+checkedView);
if (checkedView != null) {
((CheckableImageView) checkedView)
.setChecked(false);
Log.d(TAG, "uncheck position="
+ oldCheckedPosition);
}
viewToCheck.setChecked(true);