Hi, I need to create a searchbar that filters the results of my cardview.
This is the cardview class:
import android.content.Intent
import android.os.AsyncTask
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import com.grupoprilux.priluxcalc.R
import kotlinx.android.synthetic.main.activity_card_luminarias.*
import org.json.JSONArray
import java.net.HttpURLConnection
import java.net.URL
class CardNormativa : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_card_normativa)
val url = "http:www.grupoprilux.com/priluxcalc/normativa.php"
AsyncTaskHandleJSON().execute(url)
}
inner class AsyncTaskHandleJSON: AsyncTask<String, String, String>() {
override fun doInBackground(vararg url: String?): String {
var texto: String
val connection = URL(url[0]).openConnection() as HttpURLConnection
try {
connection.connect()
texto = connection.inputStream.use { it.reader().use { reader -> reader.readText() } }
} finally {
connection.disconnect()
}
return texto
}
override fun onPostExecute(result: String?) {
super.onPostExecute(result)
handleJSON(result)
}
}
private fun handleJSON(jsonString: String?) {
val jsonArray = JSONArray(jsonString)
var list = ArrayList<Normativa>()
var objetoNum = 0
while(objetoNum < jsonArray.length()) {
val priluxJsonObjet = jsonArray.getJSONObject(objetoNum)
list.add(Normativa(
priluxJsonObjet.getString("NOMBRE"),
priluxJsonObjet.getString("LUXES"),
priluxJsonObjet.getString("ALTSUELO")
//priluxJsonObjet.getString("FOTO")
))
objetoNum++
}
val adapter = RecyclerAdapterNormativa(this, list)
priluxCalcList.adapter = adapter
}
}
And this is the adapter:
import android.widget.BaseAdapter
import android.content.Context
import android.content.Intent
import android.support.design.widget.Snackbar
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
class RecyclerAdapterNormativa(val context: Context, val list: ArrayList<Normativa>): BaseAdapter() {
override fun getView(pos: Int, itemView: View?, p2: ViewGroup?): View {
val view: View = LayoutInflater.from(context).inflate(R.layout.card_layout_normativa, p2, false)
val priluxNombre = view.findViewById<TextView>(R.id.item_detail) //as TextView
val priluxCodigo = view.findViewById<TextView>(R.id.item_title)
view.setOnClickListener { v: View ->
var posicion: Int = pos
Snackbar.make(view, "Has seleccionado la celda $posicion", Snackbar.LENGTH_LONG).setAction("Accion", null).show()
view.context.startActivity(intent)
}
nombre.text = list[pos].nombre
codigo.text = list[pos].luxes
return view
}
override fun getItem(p0: Int): Any {
return list[p0]
}
override fun getItemId(p0: Int): Long {
return p0.toLong()
}
override fun getCount(): Int {
return list.size
}
}
Thank you very much in advance!