Skip to content

Instantly share code, notes, and snippets.

App Git Repo
https://github.com/AmaroNeto/Campina
ssh: git@github.com:AmaroNeto/Campina.git
http: https://github.com/AmaroNeto/Campina.git
Server Git Repo
https://github.com/jflima/campina_server
@AmaroNeto
AmaroNeto / AdapterObject.kt
Created August 11, 2019 22:34
Interface de contrato para todos os objetos serem genéricos para RecycleView Adapter
interface AdapterObject {
fun layoutId() : Int
fun isFilterable(filter: String) : Boolean
}
@AmaroNeto
AmaroNeto / Movie.kt
Created August 11, 2019 22:37
Classe que define o modelo de um filme
class Movie(
val title: String,
val year: Int,
val director: String,
val studio: String): AdapterObject {
override fun layoutId(): Int {
return R.layout.movie_item_list
}
@AmaroNeto
AmaroNeto / movie_item_list.xml
Created August 11, 2019 22:42
Design de um filme na lista.
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<data>
<variable
name="model"
type="com.example.genericadapter.Movie"/>
</data>
class GenericAdapter<T: AdapterObject>(val mList : List<T>) :
RecyclerView.Adapter<GenericAdapter<T>.ViewHolder<ViewDataBinding>>(), Filterable {
private var searchList : List<T>
var listener : AppAdapterListener<T>? = null
interface AppAdapterListener<T> {
fun onItemClick(model: T, position: Int)
}
@AmaroNeto
AmaroNeto / GenericAdapter-1.kt
Created January 22, 2020 17:40
GenericAdapter-1
class GenericAdapter<T: AdapterObject>(val mList : List<T>) :
RecyclerView.Adapter<GenericAdapter<T>.ViewHolder<ViewDataBinding>>(), Filterable {
@AmaroNeto
AmaroNeto / GenericAdapter-2.kt
Created January 22, 2020 17:42
GenericAdapter-2
var listener : AppAdapterListener<T>? = null
interface AppAdapterListener<T> {
fun onItemClick(model: T, position: Int)
}
@AmaroNeto
AmaroNeto / Filter.kt
Last active March 15, 2020 18:18
Filter
override fun getFilter(): Filter {
return object : Filter() {
override fun performFiltering(constraint: CharSequence?): FilterResults {
val charString = constraint.toString()
var searchResult: List<T> = listOf()
if(charString.isEmpty()) {
searchResult = mList
} else {
val filteredList = ArrayList<T>()
mList.forEach {row ->
@AmaroNeto
AmaroNeto / Activity.kt
Last active January 23, 2020 21:05
GenericActivity
class MainActivity: AppCompatActivity(), GenericAdapter.AppAdapterListener<Movie> {
private lateinit var recyclerView: RecyclerView
private lateinit var searchView: SearchView
private var adapter: GenericAdapter<Movie>? = null
// ...
private fun setupAdapter(movies: List<Movie>) {
adapter = GenericAdapter<Movie>(movies)
@AmaroNeto
AmaroNeto / AdapterObject-3.kt
Created January 23, 2020 19:54
AdapterObject-3
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) : ViewHolder<ViewDataBinding> {
val bind : ViewDataBinding = DataBindingUtil.bind(LayoutInflater
.from(parent.context)
.inflate(viewType,parent,false))!!
return ViewHolder(bind)
}