2011-08-11 4 views
0

iPhone에서 편집 가능한 UITableView와 같은 것을 만드는 방법은 무엇입니까?Android에서 편집 가능한 ListView - iOS에있는 것처럼

목록을 편집 모드로 전환 한 다음 여러 항목을 선택한 다음 작업 (삭제, 다른 목록으로 이동)을 수행 할 수 있어야합니다.

내장 소스 또는 오픈 소스 대안이 없다면 직접 코딩해야 할 것입니다.

각 ListView 항목의 XML 레이아웃에 (처음에는 보이지 않는) 체크 박스를 추가 할 수 있다고 생각하고 사용자가 "편집"을 클릭하면 목록 어댑터에 플래그를 설정하여 체크 박스를 표시하고 이동 및 삭제 버튼을 표시하십시오.

사용자가 이동/삭제 버튼을 클릭하면 체크 된 항목의 색인을 수집하고 (this answer 참조) 작업을 수행합니다.

사용자가 편집 모드를 종료하면 확인란이 다시 사라집니다.

내 질문에, 목록보기의 모든 항목을 수정하여 확인란을 표시하려면 어떻게해야합니까? 어댑터에 플래그를 설정할 수 있으며 getView에서 해당 확인란의 표시 여부를 설정합니다. 하지만 어떻게 모든 뷰 (각 getView 호출) 얻으려면 listview 강제 것이다 - 그것을 무효화 할?

enter image description here

+0

(모든보기를 무효화하기 위해) notifyDataSetChanged를 호출 할 수 있습니까? – njzk2

+0

2 년 반 후에도 아직 아무 것도 없습니다 – Axarydax

답변

1

당신은 사용할 수 있습니다 ... 선택한보기에 따라 물건을 할 수있는 상황에서 이 자습서에서 같은 메뉴 :

http://www.miximum.fr/tutos/849-porting-the-contextual-anction-mode-for-pre-honeycomb-android-apps

http://androidfornewbies.blogspot.com/2012/05/14-tutorial-using-contextual-action.html

http://wptrafficanalyzer.in/blog/creating-a-contextual-menu-bar-contextual-action-mode-for-a-single-view-in-android/

편집 :

여기에 첫 번째 링크에서와 같이 여러 삭제할 수는 선택한 모든 항목을 삭제해야합니다 빠른 코드입니다.

List<String> titles = new ArrayList<String>(); 

... 

SparseBooleanArray checked = mListView.getCheckedItemPositions(); 

    for (int i = 0 ; i < checked.size(); i++) { 
     if(checked.valueAt(i)) 
     //delete that item from the source array of the listView 
     // then notify the adapter with change. 
     titles.remove(i); 
    } 
+0

예,하지만 그 접근 방식으로 한 번에 여러 항목을 삭제할 수 없습니다 – Axarydax

+1

위의 편집을 참조하십시오. –

0

당신이 ...하지 EFFECIENT ADAPTER이있는 경우,이 첫 번째보고있을 수는 onListItemClick() 당신이