リスト表示 - 1 

一覧表示で
・ListView
・RecyclerView
の使い方が混乱していたので、ちょっと整理のためコードを作って見ました
[ここ](https://github.com/bokufolivora/testListView) に置いてあります
  
  
今回は  ListView + ArrayAdpter で表示するケース  
  
  
### 画面の設定

activity_list1.xml に　ListView　を設定
追加用にボタンも設定してます


``` xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <ListView
            android:id="@+id/listView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="9">

        </ListView>

        <Button
            android:id="@+id/btnAdd1"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="追加"/>


    </LinearLayout>

</android.support.constraint.ConstraintLayout>
```

### サンプル用のデータ

データにサンプルのクラス(ClsListData.kt)を作りって確認してます
使用する場合は、ここでファイルやデータベースとリンクすればいいかと


``` kotlin
class ClsListData {
    private var itemCount = 10
    private val dummyList : ArrayList<String> = ArrayList()
    init {
        dummyList.add("サンプル 001")
        dummyList.add("サンプル 002")
        dummyList.add("サンプル 003")
        dummyList.add("サンプル 004")
        dummyList.add("サンプル 005")
        dummyList.add("サンプル 006")
        dummyList.add("サンプル 007")
        dummyList.add("サンプル 008")
        dummyList.add("サンプル 009")
        dummyList.add("サンプル 010")
    }

    val size : Int
        get() {
            return dummyList.size
        }

    val listData : ArrayList<String>
        get() {
            return dummyList
        }
    //　追加
    fun putItem( ) {
        itemCount++
        val itemData : String = String.format( "サンプル %03d",itemCount)
        dummyList.add(itemData)
    }
    // 取得
    fun getItem( Idx:Int) : String {
        return dummyList[Idx]
    }
    // 削除
    fun deleteItem(Idx:Int) {
        dummyList.removeAt(Idx)
    }
    // 移動
    fun moveItem(formIdx:Int, toIdx:Int) {
        if ( 1 == abs(formIdx-toIdx)) {
            exchangeItem(formIdx, toIdx)
        } else if (formIdx < toIdx ) {
            // 上から下へ
            val tmp = dummyList[formIdx]
            val sPosition = formIdx
            val ePosition = toIdx-1
            for(i:Int in sPosition..ePosition) {
                exchangeItem(i,i+1)
            }
            dummyList[toIdx] = tmp
        } else {
            // 下から上へ
            val tmp = dummyList[toIdx]
            val sPosition = toIdx
            val ePosition = formIdx+1
            for(i:Int in sPosition..ePosition) {
                exchangeItem(i,i-1)
            }
            dummyList[toIdx] = tmp
        }
    }
    //　入れ替え
    private fun exchangeItem(formIdx:Int, toIdx:Int) {
        val tmp : String    = dummyList[toIdx]
        dummyList[toIdx]   = dummyList[formIdx]
        dummyList[formIdx] = tmp
    }

}    
```

使ってないメゾットりますが、今回は気にしないでください
（次回の分です）

### 表示＆操作

``` kotlin
class List1Activity : AppCompatActivity() {

    private val mSampleData = ClsListData()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_list1)

      btnAdd1.setOnClickListener {
          mSampleData.putItem()
          listRedisply()
      }
        // クリック
        listView1.setOnItemClickListener {parent, view, position, id ->
            val selText = mSampleData.getItem(position)
            Toast.makeText(this, "Clicked: ${selText}", Toast.LENGTH_SHORT).show()
        }
        // 長押し
        listView1.setOnItemLongClickListener { parent, view, position, id ->
            AlertDialog.Builder(this).apply {
                setTitle("削除")
                setMessage(mSampleData.getItem(position))
                setPositiveButton("OK", DialogInterface.OnClickListener { _, _ ->
                    // OKをタップしたときの処理
                    mSampleData.deleteItem(position)
                    listRedisply()
                })
                setNegativeButton("Cancel", null)
                show()
            }
            return@setOnItemLongClickListener true
        }
    }
    override fun onResume() {
        super.onResume()
        listRedisply()
    }
    //
    private fun listRedisply() {
        val listAdapter = ArrayAdapter<String>(this,android.R.layout.simple_expandable_list_item_1)
        val data = mSampleData.listData
        for(i:Int in 1..data.size) {
            listAdapter.add(data[i-1])
        }
        listView1.adapter = listAdapter
    }
}
```


出来る事としては
・クリックで Toastに選ばれたデータを表示
・長押しすると、削除して良いかのダイアログが表示されOKで削除
・「追加」ボタンを押すと、最後にデータが追加される

単純に一覧表するならこの方法で問題ないと思います