怠慢プログラマーの備忘録

怠慢でナマケモノなプログラマーの備忘録です。

【Android】RecyclerViewでHorizontalScrollを実現する[備忘録]

掲題の通りRecyclerViewでHorizontalScrollを実現します。

RecyclerViewHolder.kt

import android.view.View
import androidx.recyclerview.widget.RecyclerView

class RecyclerViewHolder(view: View): RecyclerView.ViewHolder(view) {
    // layoutファイルのUIコンポーネント
}

RecyclerAdapter.kt

import android.content.Context
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.fuga.hoge.R

class RecyclerAdapter(private val context: Context) :  RecyclerView.Adapter<RecyclerView.ViewHolder>() {
    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
        val layoutInflater = LayoutInflater.from(context)
        val view = layoutInflater.inflate(R.layout.layout_recycler_item, parent, false)
        val holder = TutorialRecyclerViewHolder(view)
        return holder
    }

    override fun getItemCount(): Int {
        return 3
    }

    override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
    }
}

MainActivity.kt

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.PagerSnapHelper
import androidx.recyclerview.widget.RecyclerView
import com.fuga.hoge.R
import com.fuga.hoge.presentation.MainActivity

class LoginActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_login)

        this.createRecyclerView()
    }

    // MARK: - Privates
    private fun createRecyclerView() {
        val recyclerView = findViewById<RecyclerView>(R.id.recycler_view)
        val adapter = RecyclerAdapter(this)
        recyclerView.adapter = adapter
        val layoutManager = LinearLayoutManager(this)
        layoutManager.orientation = (LinearLayoutManager.HORIZONTAL)
        recyclerView.layoutManager = layoutManager
        val snapHelper = PagerSnapHelper()
        snapHelper.attachToRecyclerView(recyclerView)

    }
}
  • layoutManagerのorientationにLinearLayoutManager.HORIZONTALを設定し、対象RecyclerViewのlayoutManagerとする
  • SnapHelperを有効にしたい場合はsnapHelper.attachToRecyclerView()に対象RecyclerViewを与える

たった1日で基本が身に付く!  Androidアプリ開発超入門

たった1日で基本が身に付く! Androidアプリ開発超入門

  • 作者:中川 幸哉
  • 発売日: 2018/09/21
  • メディア: 単行本(ソフトカバー)