내 응용 프로그램에서 사용자 정의 수신기를 사용하여 listview가 있습니다.android - actvity가 올바른 사용자 위치 수신기에서 위치 얻으십시오
내 활동에서 onSaveInstanceState 및 onRestoreInstanceState를 사용하고 싶습니다. 그러나 필요한 정보는 내 클래스 CustomListener 내의 OnItemClick 메서드에만 있습니다.
클릭 한 항목의 위치가 어디인지를 알 수있는 유일한 방법이기 때문에 매개 변수 "position"(onItemClick 매개 변수 중 하나)이 필요합니다. 그리고 두 mthods onSaveInstanceState 및 onRestoreInstanceState에서 나는 활동의 상태를 올바르게 복원해야한다는 것을 알아야합니다. (I 옳은 방법이 아니다 생각하는 방법을 얻을 CustomListener에 설정하고 두 가지 방법이 onSaveInstanceState와 onRestoreInstanceState있는 활동에 사용할 생성 (가장 좋은 방법은) 올 - 1 :
내 질문이 있습니다 이,하지만 난 다른 아이디어가 없어) - 일단 내가 매개 변수 위치를 가지고, 나는 세로 모드에 있고 가로 모드, 시스템 전달하기 때문에 CustomListener의 메서드 OnItemClick 내부에이 매개 변수를 설정하는 문제가있다 OnItemClick을 호출하지 않으므로 메서드 내의 매개 변수가 수정되지 않고 가로 레이아웃이 수정되지 않습니다.
이 방법은 MainActivity에 있습니다
private void populate(ListView lv){
ImageAdapter arrayAdapter;
//set list view
arrayAdapter = new ImageAdapter(this, R.layout.list_view_layout, arrayFromNumberToId, hmFromIdToName);
lv.setAdapter(arrayAdapter);
//set list listener
listener=new CustomListener(hm, hmFromIdToName, arrayFromNumberToId);
lv.setOnItemClickListener(listener);
}
이 방법은 클래스 CustomListener에 : 귀하의 답변
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
int imageID;
String description;
String name;
imageID = arrayFromNumberToId[position];
description = hm.get(imageID);
name = hmIdToName.get(arrayFromNumberToId[position]);
extras = new Bundle();
extras.putInt("imageID", imageID);
extras.putCharSequence("description", description);
extras.putCharSequence("name", name);
if(parent.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
Intent intent = new Intent(parent.getContext(), DescriptionActivity.class);
intent.putExtras(extras);
parent.getContext().startActivity(intent);
}
else{
ImageView imageViewLayout;
TextView textView;
textView = (TextView) parent.getRootView().findViewById(R.id.textDescription);
textView.setText(description);
imageViewLayout = (ImageView) parent.getRootView().findViewById(R.id.imageBig);
imageViewLayout.setImageResource(imageID);
textView = (TextView) parent.getRootView().findViewById(R.id.textName);
textView.setText(name);
textView.setTypeface(null, Typeface.BOLD);
}
}
감사합니다!
class MyActivity extends Activity {
private int mSelectedItemPosition;
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt(POSITION, mSelectedItemposition);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
savedInstanceState.getInt(POSITION);
}
...
}
을 그런만큼 당신의 CustomListener 같이
답변을 주셔서 대단히 @ 제이슨! – soissy