Create a searchbar kotlin

0

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!

    
asked by Portigato 08.07.2018 в 18:23
source

0 answers