gridview 크기와 열 너비를 기반으로 뷰를 설정하는 gridview가 있습니다. 시작할 때 모든 것이 잘되지만 방향을 변경하면 뷰가 다시 생성됩니다. 확인 된 체크 상자가 새로 고쳐 지므로 원하는 것은 아닙니다. 스크롤 한 상태와 확인란 상태를 유지해야합니다. 여기 안드로이드 gridview는 방향을 바꿀 때 상태를 유지하지만 뷰를 업데이트해야합니다.
은의 getView 내 코드입니다 : configChanges는 = "오리엔테이션"이 추가 그리드
1
A
답변
0
내보기를 업데이트하지 않습니다 항목에서의 활동에 불어 : 나는 안드로이드를 설정하면
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
convertView = mInflater.inflate(R.layout.galleryitem, null);
holder.imageview = (ImageView) convertView.findViewById(R.id.thumbImage);
holder.checkbox = (CheckBox) convertView.findViewById(R.id.itemCheckBox);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
ImageItem item = images.get(position);
holder.checkbox.setId(position);
holder.imageview.setId(position);
holder.checkbox.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
CheckBox cb = (CheckBox) v;
int id = cb.getId();
if (images.get(id).selection) {
cb.setChecked(false);
images.get(id).selection = false;
} else {
cb.setChecked(true);
images.get(id).selection = true;
}
}
});
holder.imageview.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
int id = v.getId();
ImageItem item = images.get(id);
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
final String[] columns = { MediaStore.Images.Media.DATA };
Cursor imagecursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
columns, MediaStore.Images.Media._ID + " = " + item.id, null, MediaStore.Images.Media._ID);
if (imagecursor != null && imagecursor.getCount() > 0) {
imagecursor.moveToPosition(0);
String path = imagecursor.getString(imagecursor
.getColumnIndexOrThrow(MediaStore.Images.Media.DATA));
File file = new File(path);
imagecursor.close();
intent.setDataAndType(Uri.fromFile(file), "image/*");
startActivityForResult(intent, VIEW_IMAGE);
}
}
});
// holder.imageview.setImageBitmap(item.img);
holder.imageview.setLayoutParams(mImageViewLayoutParams);
// Check the height matches our calculated column width
if (holder.imageview.getLayoutParams().height != mItemHeight) {
holder.imageview.setLayoutParams(mImageViewLayoutParams);
}
bitmapFromId.DisplayImage(item.id, holder.imageview);
// holder.imageview.setImageBitmap(item.img);
holder.checkbox.setChecked(item.selection);
return convertView;
}
AndroidManifest.xml에
android:configChanges="orientation|screenSize|keyboardHidden"
0
는 매니페스트
<activity
android:name=".Your_Activity"
android:configChanges="keyboardHidden|orientation" >
이 추가
그리고 당신은 설정 변경하기 전에 상태를 유지하고 변경있어 후 복원 할 수 있습니다 Window.onOrientationChange
0
에서 자바 코드에서보기를 업데이트하여 변경 사항을 확인하십시오. 아래에 표시된 것과 비슷한 것을 할 수 있습니다.
/*
* (non-Javadoc)
*
* @see android.app.Activity#onRestoreInstanceState(android.os.Bundle)
*/
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
int scrollTo = savedInstanceState.getInt("firstItem");
gridView.setSelection(scrollTo);
setSelectedItem(savedInstanceState.getInt("selectedItem"));//A method to set the selected Item
}
/* (non-Javadoc)
* @see android.app.Activity#onSaveInstanceState(android.os.Bundle)
*/
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
int scrollTo = gridView.getFirstVisiblePosition();
outState.putInt("firstItem", scrollTo);
int selectedItem = getSelectedImageItem();//A method to retrieve the selected item from the adapter
outState.putInt("selectedItem", selectedItem);
/*additionally you can pass the entire collection into the bundle and retrieve it as well
using android.app.Activity#onRetainNonConfigurationInstance*/
}
자세한 내용은 아래 링크를 참조하십시오. 장기적으로 도움이 될 것입니다. configChanges는 = "오리엔테이션"는 그리드 내보기를 업데이트하지 않습니다 : 내가 안드로이드를 설정하면
. 나는 오리엔테이션 변경에 대한 뷰를 업데이트 할 필요가있다 – sukarno
매번 내가 설정 변경 방향을 볼 때마다 나는 게으름 때문에 -1을 준다. – Necronet