Элементы AutoCompleteTextView не активируются при использовании пользовательского макета элемента - PullRequest
1 голос
/ 09 июля 2019

Я занимаюсь разработкой приложения, которое использует AutoCompleteTextView и пользовательский макет элемента, и я не могу заставить действие щелчка элемента работать.

Вот пользовательский макет элемента:

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
   <data>
       <variable name="viewModel" type="blog.liderc.familybudget.vms.DepartmentVM"/>
       <variable name="parentViewModel" type="blog.liderc.familybudget.AddSubjectViewModel"/>
   </data>
   <LinearLayout
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:orientation="horizontal">
       <TextView
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:gravity="start"
               android:text="@{viewModel.title}"
               android:textSize="20sp"/>
       <Button
               android:layout_width="wrap_content"
               android:layout_height="wrap_content"
               android:gravity="end"
               android:text="x"
               android:textSize="20sp"
               android:onClick="@{() -> parentViewModel.deleteDepartmentAsync(viewModel)}"/>
   </LinearLayout>
</layout>

Вот как я это настраиваю:

override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
   return activity?.let {
       val builder = AlertDialog.Builder(it)
       val view = LayoutInflater
           .from(it)
           .inflate(R.layout.dialog_add_subject, null)

       viewModel = ViewModelProviders.of(it).get(AddSubjectViewModel::class.java)
       viewModel.subject = SubjectVM()
       viewModel.departmentsAutoComplete = departments
       val app = it.application as FamilyBudgetApp
       viewModel.depsRepo = app.depsRepository.value

       val adapter = ObserverListAdapter(
           departments,
           R.layout.department_autocomplete,
           viewModel) { view.department.refreshAutoCompleteResults() }
       view.department.setAdapter(adapter)

       val binding: ViewDataBinding? = DataBindingUtil.bind(view)
       binding?.run {
           setVariable(BR.viewModel, viewModel)
           executePendingBindings()
       }
       builder.setView(view)
           .setPositiveButton("Remember", positive)
           .setNegativeButton("Nevermind") { dialog, _ -> dialog.cancel() }
       builder.create()
   } ?: throw IllegalStateException("Activity cannot be null")
}

R.layout.department_autocomplete - это макет пользовательского элемента.

Когда я вписываю в соответствующее поле AutoCompleteTextView, предложения фильтруются и отображаются правильно, но ничего не происходит, когда я нажимаю на любой из них.

Вот как это выглядит: Меню автозаполнения

1 Ответ

0 голосов
/ 09 июля 2019

У меня та же проблема, что и у вас. Вам нужно будет создать собственное событие onItemClick . После этого учебника вам нужно будет установить собственный onItemClickListener .

Это должно выглядеть так:

    autoCompleteTextView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                                    int position, long id) {
                // click event (such as filling the autocomplete section)
            }
        });

редактировать: я не видел ваш комментарий. Еще я должен был установить android:descendantFocusability="blocksDescendants" в <LinearLayout> из файла xml. Источник

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...