LoginSignup
3
0

More than 5 years have passed since last update.

スクロールで画面外に出た RecyclerView のアイテムを取得してみた件

Posted at

方法

RecyclerView.AdapteronViewDetachedFromWindow で検知できます。

サンプル

SampleAdapter.kt
import android.content.Context
import android.databinding.DataBindingUtil
import android.support.v7.widget.RecyclerView
import android.util.Log
import android.view.LayoutInflater
import android.view.ViewGroup
import tokyo.tt.databinding.RecyclerItemSampleBinding

class SampleAdapter(
        context: Context,
        private val texts: List<String>) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {

    companion object {
        val TAG: String = SampleAdapter::class.java.simpleName
    }

    private val layoutInflater = LayoutInflater.from(context)

    override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
        when (holder) {
            is SampleViewHolder -> holder.bind(texts[position])
        }
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
        return SampleViewHolder(DataBindingUtil.inflate(layoutInflater, R.layout.recycler_item_sample, parent, false))
    }

    override fun getItemCount() = texts.size

    override fun onViewDetachedFromWindow(holder: RecyclerView.ViewHolder) {
        super.onViewDetachedFromWindow(holder)

        // 画面外に出たアイテムの位置も参照できます
        Log.d(TAG, "adapterPosition = ${holder.adapterPosition}")
    }

    inner class SampleViewHolder(private val binding: RecyclerItemSampleBinding) : RecyclerView.ViewHolder(binding.root) {
        fun bind(text: String) {
            binding.textView.text = text
        }
    }
}
3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0