Hi Guys, Maybe you all are expert in terms of using RecyclerView in android. This blog is simple example for using filter option with RecyclerView adapter. As for now you will instantiate RecyclerView and set the adapter to RecyclerView as following way. RecyclerView list = (RecyclerView) findViewById(R.id.list); list.setLayoutManager(new LinearLayoutManager(this)); list.setHasFixedSize(true); ArrayList<Number> numbers = new ArrayList<>(); String ONEs[] = {"ZERO", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE", "TEN"}; String TENs[] = {"ZERO", "TEN", "TWENTY", "THIRTY", "FOURTY", "FIFTY", "SIXTY", "SEVENTY", "EIGHTY", "NINETY", "HUNDRED"}; String HUNDREDS[] = {"ZERO", "HUNDRED", "TWO HUND
Though Kotlin has lot of massive features to speedup the development time, here is the simple example of using RecyclerView in Android.
In Kotlin we don't need to declare and initialize RecyclerView. We can simply access the id of RecyclerView from xml.
Ex :
We can simply access id of RecyclerView from above xml in kotlin file.
Here is the Adapter.kt class.
And Here is the MainActivity.kt class.
Did you noticed, we never declare recyclerView nor initialized, instead we directly accessed it from activity_main.
In ViewHolder also, we didn't declare and initialize textView
And also, unless Java, default constructor will come with class name itself; like Adapter(val strings: Array, val activity: MainActivity) .
So, If you think this is the right time to start with Kotlin, then start alongside with your current project. Yes, you can use Java and Kotlin in same project. If your current Activity is java, don't worry, you can create your next Activity in kotlin. Or you can convert your current Activity also to Kotlin and then continue learning Kotlin in same Activity.
Here is the full video tutorial
If you are really interested in this code, then please share this post with your friends.
Text WhatsApp message to +91-99654 70689 To join Android Developers WhatsApp group.
Join WhatsApp group by this link
Thank You
Ex :
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout 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" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.guna.kotlinapplication.MainActivity"> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" app:layout_constraintTop_toTopOf="parent" android:layout_width="match_parent" android:layout_height="wrap_content"/> </android.support.constraint.ConstraintLayout>
We can simply access id of RecyclerView from above xml in kotlin file.
recyclerView.layoutManager = LinearLayoutManager(this) recyclerView.setHasFixedSize(true) recyclerView.adapter = Adapter(myStrings, this)
Here is the Adapter.kt class.
import android.support.v7.widget.RecyclerView import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import kotlinx.android.synthetic.main.item.view.* /** * Created by Guna on 30-11-2017. */ class Adapter(val strings: Array<String>, val activity: MainActivity) : RecyclerView.Adapter<Adapter.ViewHolder>() { override fun onBindViewHolder(holder: ViewHolder?, position: Int) { holder?.bind(strings[position], activity) } override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): ViewHolder = ViewHolder(LayoutInflater.from(parent?.context).inflate(R.layout.item, parent, false)) override fun getItemCount(): Int = strings.size class ViewHolder(itemView: View?) : RecyclerView.ViewHolder(itemView) { fun bind(string: String, activity: MainActivity) { itemView.textView.setText(string) itemView.setOnClickListener{ view -> activity.fromAdapter(string) } } } }
And Here is the MainActivity.kt class.
import android.graphics.Canvas import android.graphics.Color import android.graphics.Paint import android.graphics.Rect import android.os.Bundle import android.support.v7.app.AppCompatActivity import android.support.v7.widget.LinearLayoutManager import android.support.v7.widget.RecyclerView import android.support.v7.widget.helper.ItemTouchHelper import android.widget.Toast import android.widget.Toast.LENGTH_LONG import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { val myStrings = arrayOf("One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen") val paint = Paint() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) recyclerView.layoutManager = LinearLayoutManager(this) recyclerView.setHasFixedSize(true) recyclerView.adapter = Adapter(myStrings, this) val callback = object : ItemTouchHelper.SimpleCallback(ItemTouchHelper.UP or ItemTouchHelper.DOWN, ItemTouchHelper.LEFT or ItemTouchHelper.RIGHT) { override fun onMove(recyclerView: RecyclerView?, viewHolder: RecyclerView.ViewHolder?, target: RecyclerView.ViewHolder?): Boolean { val fromPosition = viewHolder!!.adapterPosition val toPosition = target!!.adapterPosition val fromString = myStrings[fromPosition] val toString = myStrings[toPosition] myStrings[fromPosition] = toString myStrings[toPosition] = fromString recyclerView?.adapter?.notifyItemMoved(fromPosition, toPosition) return true } override fun onSwiped(viewHolder: RecyclerView.ViewHolder?, direction: Int) { if (direction == ItemTouchHelper.LEFT) { Toast.makeText(this@MainActivity, myStrings[viewHolder!!.adapterPosition] + " Left Swiped", LENGTH_LONG).show() } else if (direction == ItemTouchHelper.RIGHT) { Toast.makeText(this@MainActivity, myStrings[viewHolder!!.adapterPosition] + " Right Swiped", LENGTH_LONG).show() } recyclerView.adapter.notifyDataSetChanged() } override fun onChildDraw(c: Canvas?, recyclerView: RecyclerView?, viewHolder: RecyclerView.ViewHolder?, dX: Float, dY: Float, actionState: Int, isCurrentlyActive: Boolean) { if (dX > 0) { paint.color = Color.GREEN val rect = Rect(viewHolder!!.itemView!!.left, viewHolder.itemView.top, dX.toInt(), viewHolder.itemView.bottom) c?.drawRect(rect, paint) } else if (dX < 0) { paint.color = Color.RED val rect = Rect(viewHolder!!.itemView.right.plus(dX).toInt(), viewHolder.itemView.top, viewHolder.itemView.right, viewHolder.itemView.bottom) c?.drawRect(rect, paint) } super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive) } } val helper = ItemTouchHelper(callback) helper.attachToRecyclerView(recyclerView) } fun fromAdapter(string: String) { Toast.makeText(this, string, LENGTH_LONG).show() } }
Did you noticed, we never declare recyclerView nor initialized, instead we directly accessed it from activity_main.
In ViewHolder also, we didn't declare and initialize textView
And also, unless Java, default constructor will come with class name itself; like Adapter(val strings: Array
So, If you think this is the right time to start with Kotlin, then start alongside with your current project. Yes, you can use Java and Kotlin in same project. If your current Activity is java, don't worry, you can create your next Activity in kotlin. Or you can convert your current Activity also to Kotlin and then continue learning Kotlin in same Activity.
Here is the full video tutorial
Interesting right?
If you are really interested in this code, then please share this post with your friends.
Simple example of using Spinner in Kotlin | Android
Simple example of using CheckBox in Kotlin | Android
Using Button in Kotlin | Android
Getting Started on Kotlin
Text WhatsApp message to +91-99654 70689 To join Android Developers WhatsApp group.
Join WhatsApp group by this link
Thank You
Comments
Post a Comment