SearchView с RecyclerView KotlinAndroid

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 SearchView с RecyclerView Kotlin

Сообщение Anonymous »

Все еще в моем первом приложении я могу загрузить RecyclerView со списком контактов на телефоне. Вы просмотрели много видео, но все еще не работает???
Проблема в поиске? Невозможно заставить его работать правильно. см. прикрепленный код.
Вот код MainAcitivity:

Код: Выделить всё

class MainActivity : AppCompatActivity(), EasyPermissions.PermissionCallbacks{

//Searchview
private lateinit var recyclerView: RecyclerView
private lateinit var searchView: SearchView
private var mList = ArrayList()
private lateinit var adapter: RCVAdapter

private lateinit var binding: ActivityMainBinding
var arrayList:ArrayList = arrayListOf()
var rcvAdapter:RCVAdapter = RCVAdapter(arrayList)

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)

//Searchview
recyclerView = findViewById(R.id.rcvContact)
searchView = findViewById(R.id.TxtSearch)
recyclerView.setHasFixedSize(true)
recyclerView.layoutManager = LinearLayoutManager(this)

//search
adapter = RCVAdapter(arrayList)
recyclerView.adapter = adapter

if (checkContactPermissions()) {
binding.apply {
rcvContact.apply {
layoutManager = LinearLayoutManager(this@MainActivity)
adapter = RCVAdapter(arrayList)

}
}
//now load all the phone contacts
getContacts()
}

searchView.setOnQueryTextListener(object : SearchView.OnQueryTextListener {
override fun onQueryTextSubmit(query: String?): Boolean {
return false
}

override fun onQueryTextChange(newText: String?): Boolean {
filterList(newText)
return true
}
})
}

//search filter
private fun filterList(query: String?) {
if (query != null) {
val filteredList = arrayList
for (i in mList) {
if (i.contname.lowercase(Locale.ROOT).contains(query)) {
filteredList.add(i)
}
}
if (filteredList.isEmpty()){
//does not seem to reach this point??
Toast.makeText(this,"No Contact found!", Toast.LENGTH_SHORT).show()
}else{
adapter.setFilteredList(arrayList)
}
}
}

private fun getContacts() {
//loads all contacts with no issues
}
Вот код адаптера:

Код: Выделить всё

class RCVAdapter(var contactList: ArrayList,) : RecyclerView.Adapter() {

inner class MyViewHolder(val binding: ItemContactBinding) : RecyclerView.ViewHolder(binding.root) {
val contid = binding.TxtContID
val contname = binding.TxtContName
val contno = binding.TxtContNo
val contphoto = binding.ImgContPhoto
val contemail = binding.TxtContEmail

}

override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
return MyViewHolder(
ItemContactBinding.inflate(
LayoutInflater.from(parent.context),
parent,
false
)
)
}

override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
val item = contactList[position]
holder.binding.TxtContID.text = item.contid.toString()
holder.binding.TxtContName.text = item.contname
holder.binding.TxtContNo.text = item.contnumber

if(contactList[position].contPhoto != null)
holder.binding.ImgContPhoto.setImageBitmap(contactList[position].contPhoto)
else
holder.binding.ImgContPhoto.setImageDrawable(ContextCompat.getDrawable(holder.itemView.cont
ext,R.drawable.ic_people_24))

holder.binding.TxtContEmail.text = item.contemail
}

override fun getItemCount(): Int = contactList.size

fun setFilteredList(contactList: List){
this.contactList = contactList as ArrayList
notifyDataSetChanged()
}
}
Вот мой класс ContactModel:

Код: Выделить всё

data class ContactModel (
var contid: String = "",
var contname: String = "",
var contnumber: String = "",
var contPhoto: Bitmap? = null,
var contemail: String = "",
)
Как уже говорилось, новинка в Android Kotlin (фон vb.net)
Благодарю за помощь, чтобы увидеть, что не так с кодом!
п>

Подробнее здесь: https://stackoverflow.com/questions/793 ... iew-kotlin
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Kotlin RecyclerView в RecyclerView после обновления представление переходит в дочерний RecyclerView
    Anonymous » » в форуме Android
    0 Ответы
    80 Просмотры
    Последнее сообщение Anonymous
  • Как использовать SearchView в списке RecyclerView
    Anonymous » » в форуме Android
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous
  • Как щелкнуть правильный элемент после использования SearchView в Recyclerview с курсором?
    Anonymous » » в форуме Android
    0 Ответы
    3 Просмотры
    Последнее сообщение Anonymous
  • Автоматически развернуть и передать фокус SearchView
    Гость » » в форуме Android
    0 Ответы
    17 Просмотры
    Последнее сообщение Гость
  • Макет таблицы адаптера Android Studio с помощью searchView
    Гость » » в форуме Android
    0 Ответы
    22 Просмотры
    Последнее сообщение Гость

Вернуться в «Android»