[Android] ListViewアイテムの移動、削除

Android7

アプリでListViewのリスト表示ができるようになれば、次は要素itemの位置を移動したり、削除したりしてみたくなります。
 
以下は、itemリストをタップして、それを削除したり上下に移動させたりする例です。
 

listviewaddremove_1
listviewaddremove_2
listviewaddremove_3
    ArrayAdapter

  1. ListView と ArrayAdapter 簡単なテキストリストの表示
  2. ArrayAdapterを使ってレイアウトをアレンジ
  3. ListActivity と ArrayAdapterで画像とテキストをリスト表示
    Basedapter

  1. BaseAdapterで画像とテキストをリスト表示
  2. ListViewリストをタップして画面遷移
  3. ListViewアイテムの移動、削除

Android Studio 2.2.2
Android 7.1.1
sponsored link

ListView

 
要素を削除、追加するには

  1. BaseAdapter が持っている、remove()、add() を使う
    • BaseAdapter adapter = new ListViewAdapter(this, R.layout.list_layout);
      add() でデータを追加する
  2. 要素自体を削除、追加する
    • BaseAdapter adapter = new ListViewAdapter(this, R.layout.list_layout, data);
      data は配列や ArrayList<T> など

が考えられます
 
今回は2のケースで作ってみました
 

ArrayList

 
基本的なやり方は、ArrayList<> の要素がListViewのCellに対応しているので、そのArrayの順番を変えたり、その要素の属性を変更して再描画させます。
 
上に移動する場合:
arrayの要素の順番を入れ替える

 
削除する場合:

 
ListViewリストをタップして画面遷移 と同様にonItemClickを使って作成します
 

MainActivity.java

 
アダプター
ListViewAdapter.java

 
activity_main.xml

 
list.xml

 
削除、移動は、ArrayList の位置にある要素を削除、移動しますが、最後に
notifyDataSetChanged() でListView を更新しています。これをしないとリストに反映されません。
 
AlertDialogはDialogFragmentを継承したクラスを呼び
その中でonCreateDialog()を使って作成します。
AlertDialog

 
References:
ListView
BaseAdapter