2017-12-16 33 views
0

ListView.CHOICE_MODE_MULTIPLE_MODAL을 사용하여 setChoiceMode를 구현 한 응용 프로그램에서 listview를 사용하고 있습니다. 목록 뷰를 길게 누르면 항목을 선택할 수 있지만 그 이후에는 화면 방향이 변경되면 작업 표시 줄이 불편을 겪습니다.다른 방향에 대해 CHOICE_MODE_MULTIPLE_MODAL이있는 ListView- setChoiceMode

내 코드가 portrait mode & landscape mode

@Override 
protected void onCreate(@Nullable Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    adapter = new ItemListAdapter(); 
    listView.setAdapter(adapter); 
    listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL); 

    listView.setMultiChoiceModeListener(new AbsListView.MultiChoiceModeListener() { 
     @Override 

     public void onItemCheckedStateChanged(ActionMode actionMode, int position, long l, boolean b) { 
      final int checkedItemCount = listView.getCheckedItemCount(); 
      actionMode.setTitle(checkedItemCount + " Selected"); 
      /*get the selected items*/ 
     } 

     @Override 
     public boolean onCreateActionMode(ActionMode actionMode, Menu menu) { 
      actionMode.getMenuInflater().inflate(R.menu.menu_listview_delete, menu); 
      return true; 
     } 

     @Override 
     public boolean onPrepareActionMode(ActionMode actionMode, Menu menu) { 
      return false; 
     } 

     @Override 
     public boolean onActionItemClicked(final ActionMode actionMode, MenuItem menuItem) { 
      switch (menuItem.getItemId()){ 
       case R.id.delete_item: 
        /*delete selected items*/ 
        return true; 
       default: 
        return false; 
      } 
     } 

     @Override 
     public void onDestroyActionMode(ActionMode actionMode) { 
      adapter.removeSelection(); 
     } 
    }); 
} 

이미지처럼 보이는, 그것은 다시 버튼을 누르면 deleted.then받지 않습니다 각각 선택한 항목을 삭제할 때 0 & 같은 항목을 선택 보여줍니다 (내 응용 프로그램 활동에서 구현 된 가로 모드에서) 작업 표시 줄 색이 흰색으로 바뀝니다. | 화면 크기 configChanges = "오리엔테이션 :

하나의 해결책은 매니페스트

안드로이드 아래 사용

(가로 모드에서 다른 방법을 선택 항목에 노력하고 세로 동일한을 삭제 회전 할 때 같은 일이 발생) "

오리엔테이션 변경시 활동이 다시 생성되지 않습니다. 세로 및 가로 레이아웃이 다르기 때문에 방향 변경시 활동 레크리에이션이 필요합니다.

나는 오리엔테이션 변경에 따라 활동이 재연되어 있기 때문에 setMultiChoiceModeListener을 매번 호출하기 때문에 문제가 있다는 것을 알고 있습니다.

누군가 문제를 해결할 수 있도록 도와 줄 수 있습니까? 감사!

답변

0

선택한 항목의 값을 저장하고 복원하려면 다음 방법을 사용하십시오.

@Override 
public void onSaveInstanceState(Bundle outState) { 
    outState.putInt("count",checkedItemCount); 
    super.onSaveInstanceState(outState); 
} 

여기에

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    if (savedInstanceState != null) { 
     //will return value of selecteditems 
     int countedItems = savedInstanceState.getInt("count"); 

    } 
} 

자세한 정보에 대한 링크의 방법에서 onCreate 복원 :
How to use onSavedInstanceState example please

+0

내가이 전에 시도조차, 문제는 카운트 값이 복원 만 선택 될 것이다 항목이 삭제되지 않습니다. 다른 제안? – Black

+0

어떤 사람이 도움이 될 수 있습니까? – Black

+0

항목을 제거하는 코드는 어디에 있습니까? – InziKhan