0
화면 회전 후 ID를 저장해야합니다. (Android 3.2 이상). Deatils : 매니페스트에서 : 활동에서회전 후 뷰 ID 유지
android:configChanges="orientation|screenSize"
:
@Override
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stub
super.onConfigurationChanged(newConfig);
initializeAnimation(true);
if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
refreshView(true);
} else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
refreshView(false);
}
}
refreshView 방법의 ListView의 수집 또는 다른 클래스의 GridView의 컬렉션을 가져옵니다 및 ViewFlipper에 넣어. 사용자는 List 또는 Grid보기에서 요소를 터치하고 AsyncTask에서 다운로드를 시작하고 선택한 요소에서 진행률 막대를 표시 할 수 있습니다.
모델 :
public List<ListView> getListViews(Context c) {
listViews.clear();
Iterator<List<Map<String, String>>> iter = arr.iterator();
while (iter.hasNext()) {
SimpleAdapter a = new SimpleAdapter(c, iter.next(), R.layout.vertical_list_view_item, new String[] { MONTH, IMAGE, DESCRIPTION}, new int[] { R.id.txtMonthV , R.id.imgV, R.id.txtDecriptionV});
ListView lv = new ListView(c);
lv.setDivider(null);
lv.setDividerHeight(0);
lv.setAdapter(a);
listViews.add(lv);
}
return listViews;
}
public List<GridView> getGridViews(Context c){
List<GridView> gridViews = new ArrayList<GridView>();
Iterator<List<Map<String, String>>> iter = arr.iterator();
while (iter.hasNext()) {
SimpleAdapter a = new SimpleAdapter(c, iter.next(), R.layout.horizontal_list_view_item , new String[] { MONTH, IMAGE/*, DESCRIPTION*/}, new int[] { R.id.txtMonthH, R.id.imgH/*, R.id.txtDescriptionH*/ });
GridView gv = new GridView(c);
gv.setHorizontalSpacing(15);
gv.setVerticalSpacing(15);
gv.setNumColumns(6);
gv.setAdapter(a);
gridViews.add(gv);
}
return gridViews;
}
콘트롤 : 비동기 작업에서는
public View currentView;
public View getCurrentPressedView(){
return currentView;
}
public void setCurrentPressedView(View v){
currentView = v;
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
if (arg0 instanceof ListView) {
/*....*/
setCurrentPressedView(arg1);
//Start download here
} else if (arg0 instanceof GridView) {
/*...*/
setCurrentPressedView(arg1);
//Start download here
}
}
: vertical_list_view_item에서
View view;
ProgressBar proBar;
@Override
protected void onPreExecute() {
super.onPreExecute();
view = getCurrentPressedView();
proBar = (ProgressBar) view.findViewById(R.id.progress);
proBar.setVisibility(View.VISIBLE);
///.....
@Override
protected void onProgressUpdate(Integer... values) {
mProDialog.setProgress(values[0]);
proBar.setVisibility(View.VISIBLE);
super.onProgressUpdate(values);
}
및 horizontal_list_view_item 진행 표시 줄이 동일한 ID를 가지고 있습니다. 그러나 화면이 회전하면 ID가 변경되고 진행률 막대를 제어 할 수 없습니다. 누군가 나를 도울 수 있습니까? Thx
아니요, 화면 회전 후 ID가 변경됩니다. 다른 그리드보기 또는 목록보기 모음이 있기 때문에 ID가 변경됩니다. –