Android Тестирование пользовательского интерфейса - проверка флажков в виде списка - PullRequest
1 голос
/ 20 апреля 2020

Я заполняю 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" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...