mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-19 11:39:42 +01:00
64 lines
1.8 KiB
Kotlin
64 lines
1.8 KiB
Kotlin
/*
|
|
* Nextcloud Talk - Android Client
|
|
*
|
|
* SPDX-FileCopyrightText: 2021 Marcel Hibbe <dev@mhibbe.de>
|
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
|
*/
|
|
package com.nextcloud.talk.adapters
|
|
|
|
import android.annotation.SuppressLint
|
|
import android.content.Context
|
|
import android.view.LayoutInflater
|
|
import android.view.View
|
|
import android.view.ViewGroup
|
|
import android.widget.TextView
|
|
import androidx.recyclerview.widget.RecyclerView
|
|
import com.nextcloud.talk.R
|
|
import fr.dudie.nominatim.model.Address
|
|
|
|
class GeocodingAdapter(private val context: Context, private var dataSource: List<Address>) :
|
|
RecyclerView.Adapter<GeocodingAdapter.ViewHolder>() {
|
|
|
|
interface OnItemClickListener {
|
|
fun onItemClick(position: Int)
|
|
}
|
|
|
|
@SuppressLint("NotifyDataSetChanged")
|
|
fun updateData(data: List<Address>) {
|
|
this.dataSource = data
|
|
notifyDataSetChanged()
|
|
}
|
|
|
|
private var listener: OnItemClickListener? = null
|
|
fun setOnItemClickListener(listener: OnItemClickListener) {
|
|
this.listener = listener
|
|
}
|
|
|
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
|
val inflater = LayoutInflater.from(context)
|
|
val view = inflater.inflate(R.layout.geocoding_item, parent, false)
|
|
return ViewHolder(view)
|
|
}
|
|
|
|
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
|
val address = dataSource[position]
|
|
holder.nameView.text = address.displayName
|
|
|
|
holder.itemView.setOnClickListener {
|
|
listener?.onItemClick(position)
|
|
}
|
|
}
|
|
|
|
override fun getItemCount(): Int {
|
|
return dataSource.size
|
|
}
|
|
|
|
fun getItem(position: Int): Any {
|
|
return dataSource[position]
|
|
}
|
|
|
|
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
|
|
val nameView: TextView = itemView.findViewById(R.id.name)
|
|
}
|
|
}
|