[Android]ListViewにチェックボクスとテキストのリストを表示する
ListViewでチェックボックスとテキストを表示するリストの作成方法をメモしておきます。今回は、ArrayAdapterを使ってTextViewに文字を表示します。
MainActivityにListViewを設置します。
<!--?xml version="1.0" encoding="utf-8"?--> <androidx.constraintlayout.widget.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" tools:context=".MainActivity"> <listview android:id="@+id/listView" android:layout_width="wrap_content" android:layout_height="0dp" android:visibility="visible" app:layout_constraintbottom_tobottomof="parent" app:layout_constraintend_toendof="parent" app:layout_constraintstart_tostartof="parent" app:layout_constrainttop_totopof="parent" tools:ignore="MissingConstraints"> </listview> </androidx.constraintlayout.widget.constraintlayout>
カスタムビューを作成
行に表示する為のレイアウトファイルを用意して、チェックボックスとテキストビューの2つのコントロールを配置します。
カスタムビューのレイアウトファイルを追加するには、プロジェクトツリーの[res]->[layout]を選択し右クリック。[New]->[Layout Resource File]を選択します。
New Resource Fileダイアログが表示されたら、File name: list_item.xlm, Root element: LinearLayoutと入力してOKを押します。
追加したlist_item.xmlにCheckBoxとTextViewを配置します。
<!--?xml version="1.0" encoding="utf-8"?--> <linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <checkbox android:id="@+id/checkBox" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:focusable="false" android:focusableintouchmode="false"> <textview android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="TextView"> </textview></checkbox></linearlayout>
リストに表示する処理はonCreateで実装します。ArrayAdapterの第二引数に追加したレイアウトを第三引数には配列に設定した文字を表示するコントロールのIDを指定します。最後の第四引数には配列を設定。ListViewに設定したArrayAdapterを設定するとリストが自動的に表示されます。
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // リストに表示する文字を配列に格納 var mylist = arrayOf("CPU", "memory", "Mouse") var listAdapter = ArrayAdapter(this, R.layout.list_item, R.id.textView, mylist ) this.listView.adapter = listAdapter }
Commentsこの記事のコメント
メールアドレスが公開されることはありません。お気軽にコメントどうぞ。