Я заполняю listView заголовком и флажком в DialogFragment.
Вопрос : С помощью этого макета я могу заставить эспрессо проверять первые несколько элементов, а затем проверять если они были проверены.
private var departments: ArrayList<Department>? = arrayListOf()
private inner class DeptAdapter(context: Context?, data: ArrayList<Department>) : ArrayAdapter<Department>(context!!, 0, data as List<Department>) {
override fun getView(position: Int, convertView: View?, container: ViewGroup): View {
var view: View? = convertView
if (view == null) {
view = layoutInflater.inflate(android.R.layout.simple_list_item_multiple_choice, container, false)
}
val checkedTextView = view?.findViewById<CheckedTextView>(android.R.id.text1)
checkedTextView?.text = getItem(position)?.name
checkedTextView?.isChecked = departments?.contains(getItem(position)) ?: false
checkedTextView?.tag = getItem(position)
checkedTextView?.setOnClickListener {
if (checkedTextView.isChecked) {
checkedTextView.isChecked = false
departments?.remove(it.tag)
} else {
checkedTextView.isChecked = true
departments?.add(it.tag as Department)
}
}
return view!!
}
}
XML из simple_list_item_multiple_choice выглядит следующим образом.
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="?android:attr/listPreferredItemHeightSmall"
android:textAppearance="?android:attr/textAppearanceListItemSmall"
android:gravity="center_vertical"
android:checkMark="?android:attr/listChoiceIndicatorMultiple"
android:paddingStart="?android:attr/listPreferredItemPaddingStart"
android:paddingEnd="?android:attr/listPreferredItemPaddingEnd" />
ListView, который содержит выше CheckedTextView, выглядит следующим образом.
<ListView
android:id="@+id/departments"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toTopOf="@+id/cancel"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />