Android RecyclerView GestureDetector SimpleOnGestureListener,kotlin
import android.graphics.Color
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.view.GestureDetector
import android.view.GestureDetector.SimpleOnGestureListener
import android.view.Gravity
import android.view.LayoutInflater
import android.view.MotionEvent
import android.view.View
import android.view.View.OnTouchListener
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
class MainActivity : AppCompatActivity() {
val TAG = "fly"
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val recyclerView = findViewById<RecyclerView>(R.id.recycler_view)
val linearLayoutManager = LinearLayoutManager(this)
linearLayoutManager.orientation = LinearLayoutManager.HORIZONTAL
recyclerView.layoutManager = linearLayoutManager
val adapter = MyAdapter()
recyclerView.adapter = adapter
val gestureDetector = GestureDetector(this, object : SimpleOnGestureListener() {
override fun onFling(
e1: MotionEvent,
e2: MotionEvent,
velocityX: Float,
velocityY: Float
): Boolean {
Log.d(TAG, "${velocityX} ${velocityY}")
return super.onFling(e1, e2, velocityX, velocityY)
}
})
recyclerView.setOnTouchListener(object : OnTouchListener {
override fun onTouch(v: View?, event: MotionEvent?): Boolean {
return gestureDetector.onTouchEvent(event!!)
}
})
}
}
class MyAdapter : RecyclerView.Adapter<MyVH>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyVH {
val view = LayoutInflater.from(parent.context)
.inflate(android.R.layout.simple_list_item_1, null, false)
val holder = MyVH(view)
return holder
}
override fun onBindViewHolder(holder: MyVH, position: Int) {
holder.text?.text = position.toString()
if (position % 2 == 0) {
holder.text?.setBackgroundColor(Color.LTGRAY)
} else {
holder.text?.setBackgroundColor(Color.WHITE)
}
}
override fun getItemCount(): Int {
return Int.MAX_VALUE
}
}
class MyVH(itemView: View) : RecyclerView.ViewHolder(itemView) {
var text: TextView? = null
init {
text = itemView.findViewById(android.R.id.text1)
text?.height = 2000
text?.width = 1000
text?.gravity = Gravity.CENTER
}
}