Как использовать AutoCompleteTextView и заполнять его данными из веб-API?

Это - некоторые файлы библиотеки, которые не были так или иначе удалены, в то время как эволюция была удалена или заменена. Хорошо вот то, что необходимо сделать.

  1. устанавливают синаптический диспетчер пакетов от центра программного обеспечения.
  2. Поиск файлов эволюции, обнаруживающихся в менеджере по обновлению (общий для эволюции, индикатор эволюции.
  3. удаление те файлы.
  4. работает sudo apt-get update в терминале
<час>

решенная проблема ;-)

81
задан Pratik Butani 26 May 2014 в 11:57
поделиться

1 ответ

Вот версия Kotlin Класса Адаптера, который загружает данные из локальной базы данных через Комнату:

import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ArrayAdapter
import android.widget.Filter
import android.widget.Filterable
import android.widget.TextView
import ...MyFinderDatabase
import ...R
import ...model.SearchResult

class SearchCompleteAdapter(context: Context, val resourceId: Int): ArrayAdapter<SearchResult>(context, resourceId), Filterable {
    private val results = mutableListOf<SearchResult>()

    override fun getCount() = results.size

    override fun getItem(position: Int) = results[position]

    override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
        val view = convertView ?: LayoutInflater.from(context).inflate(resourceId, parent, false)
        val textView = view.findViewById<TextView>(R.id.autocomplete_name)
        textView.text = getItem(position).fullName
        return view
    }

    override fun getFilter() = object : Filter(){
        override fun performFiltering(constraint: CharSequence?): FilterResults {
            val filterResults = FilterResults()
            val db = MyRoomDatabase.getDatabase(context.applicationContext)
            val dbResults = db.resultDao().findWithNameLike(String.format("%%%s%%", constraint.toString()))
            filterResults.values = dbResults
            filterResults.count = dbResults.size
            results.clear()
            results.addAll(dbResults)
            return filterResults
        }

        override fun publishResults(constraint: CharSequence?, results: FilterResults?) {
            if((results != null) && (results.count > 0)){
                notifyDataSetChanged()
            }
            else{
                notifyDataSetInvalidated()
            }
        }

        override fun convertResultToString(resultValue: Any?): CharSequence {
            val searchResult = resultValue as SearchResult
            return searchResult.fullName
        }
    }
}

определение метода ДАО:

    @Query("select * from SearchResult where full_name like :name and type = 'USER_TYPE'")
fun findWithNameLike(name: String): List<SearchResult>
0
ответ дан 24 November 2019 в 09:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: