はじめに、作り方を解説するものではなく調べた軌跡を残したもの
AndroidStudioでアプリ開発をしてみたいと思います。
しかし未経験なので何か簡単なものから始めたいです。
ということでToDoアプリなら簡単に作れるのでは?という思いからToDoアプリの構造として欠かせないリストを作る方法を調べていきます。
リストには昔はListViewを使っていたみたい、だけどRecyclerViewのほうがよさそう
AndroidStudioにはListViewとRecyclerViewがあるのですが
RecyclerViewはListViewの代替ではないよねという話
らしく
RecyclerViewはListViewでは解決出来ない or より自由にカスタマイズしたい場合に使う
「え!?結果どっち使えばわからねえ」
となったので、これはどっちも作ってみるかあと
簡単そうなListViewから作ろうと思う
作りたいものは共通させてどちらがふさわしいか決める
・リスト表示
・リストの要素を追加
・リストの要素を編集
Ⅼリストの要素を削除
最低限これがあれば、ToDoとしての役目を果たすのでこれを目標に作ります。
ListViewの使い方
KotlinでAndroidアプリのlistviewを実装する方法を現役エンジニアが解説【初心者向け】
これコピッた
AndroidStudioでEmptyで作成して、最初にactivity_main.xmlを作りました
最初にあるTextViewは削除してListViewを追加しました。
ListViewはLegacyってとこにあるのでそれをDDしてidが未設定なのでListViewと名付けます。
レイアウト系の設定は丸こぴしました。
MainActivityをつくっていきます。
これもほぼまるこぴです。
最後のListView.adapter = adapterでエラー発生
.adapterのところが赤字になっている
おそらくこれじゃ実行できないと思いつつ実行
案の定実行できませんでした
エラーメッセージは
Unresolved reference: adapter
調べるとこの名前は定義されていないから駄目だよと言われているらしい
確かにlistViewの定義がされていないので
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
var listView = findViewById<ListView>(R.id.listView)
val data = arrayOf("あり", "いもむし", "だんごむし", "てんとうむし")
val adapter = ArrayAdapter(
this,
android.R.layout.simple_list_item_1,
data
)
listView.adapter = adapter
}
}
最初の行にfindViewByIdをつけてあげる
エラーがなくなり実行できました。
リスト表示はできますが、クリックしたときの処理などをしていないのでタッチしてもなにも起きません。
参照サイトにクリックしたときの処理があったので試しに書いてみます。
これを核とタッチした要素がトーストされるらしい。
トーストってなんだ?
実行した結果は要素をタッチしたら画面下にそのテキストが表示される感じ、トーストってこんなことができると記憶しておく
リストの表示はできた、あとは追加と編集(削除)ができれば文句ない
でも要素をタッチして編集はいいけど追加などはほかにプラスボタンとかがあると便利である。
具体的な内容を定義しよう
・追加ボタンを作成
・要素をタッチすると編集できる、要素を左にスライドさせるとその要素を削除する
これは勘だけどスライドしたら要素を削除はListViewでできない気がする。
編集はトーストの要領でその命令を変更すればいいだけだと思う
追加はボタンを作成して、それを押したら配列に対して追加するように命令を出せばいいと思う。
ここで詰まる
setOnItemClickListenerで配列をいじれないかもしれない問題、というかいじり方がわからない問題が発生中
元のコードではタッチされた要素に対する処理だから元の配列については関与していないためだと思われる。
とはいえよくわからないので、ネットサーフィンしてきます。