2011-08-11 18 views
0

iPhoneで編集可能なUITableViewを作成するにはどうすればよいですか?Androidで編集可能なListView - iOSと同じ

リストを編集モードに切り替えてから、複数のアイテムを選択してから、アクションを実行するか、削除して別のリストに移動する必要があります。

組み込みソースやオープンソースの代替がない場合は、おそらく自分でコードを作成する必要があります。

各ListViewアイテムのXMLレイアウトに(最初は目に見えない)チェックボックスを追加して、ユーザーが「編集」をクリックした後、リストアダプタにフラグを設定してチェックボックスを表示させ、移動ボタンと削除ボタンを表示します。

ユーザーが[移動/削除]ボタンをクリックすると、チェックされたアイテムのインデックスを収集して(this answerを参照)、その操作を実行します。

ユーザーが編集モードを終了すると、チェックボックスをもう一度消してしまいます。

私の質問は、リストビュー内のすべての項目をチェックボックスを表示するように変更する方法です。私はアダプタにフラグを設定することができ、getViewではそのチェックボックスの可視性を設定します。しかし、どのようにリストビューを強制的にすべてのビューを取得する(各getViewを呼び出す) - それを無効にする?

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()で...、この最初のを見て

関連する問題