前提・実現したいこと
プレイヤーごとにスコアを入力していける画面を作成しています。
下図のような画面で、下記のような機能を実装したいと考えています。
・Player1のリストをタップし、数字ボタンをタップするとPlayer1の累計得点のスコアが足されていく
・得点履歴の欄に、これまでタップしていった得点の履歴が表示される
・Player2のリストをタップすると、同様の操作が行われる
発生している問題・エラーメッセージ
・ネット上を調べたのですが、RecycleViewの各アイテムをタップした後に、それぞれについて別々に変更を加えていくやり方について検討がついていません。どのようなアプローチで実現できるか、ご教示いただけないでしょうか。
該当のソースコード
kotlin
1class ScoreBook : AppCompatActivity() { 2 3 private lateinit var recyclerView : RecyclerView 4 private lateinit var viewAdapter : RecyclerView.Adapter<*> 5 6 override fun onCreate(savedInstanceState: Bundle?) { 7 super.onCreate(savedInstanceState) 8 setContentView(R.layout.activity_score_book) 9 10 val playerList: ArrayList<String> = ArrayList(intent.getStringArrayListExtra("playerList")) 11 12 viewAdapter = PlayerScoreAdapter(playerList) 13 recyclerView = findViewById<RecyclerView>(R.id.player_score_name) 14 15 recyclerView.adapter = viewAdapter 16 recyclerView.layoutManager = LinearLayoutManager(this) 17 18 val dividerItemDecoration = DividerItemDecoration(this, LinearLayoutManager(this).getOrientation()) 19 recyclerView.addItemDecoration(dividerItemDecoration) 20 21 findViewById<Button>(R.id.back_to_playerList).setOnClickListener(backToPlayer()) 22 23 } 24 25 private inner class backToPlayer : View.OnClickListener{ 26 override fun onClick(view: View) { 27 finish() 28 } 29 } 30}
PlayerScoreAdapter
kotlin
1class PlayerScoreAdapter(private val data: ArrayList<String>) : RecyclerView.Adapter<PlayerScoreAdapter.PlayerScoreViewHolder>() { 2 3 // 2: ViewHolderの宣言 4 class PlayerScoreViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) 5 6 // 3: ViewHolderが初めて作られたときの処理 7 override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PlayerScoreViewHolder { 8 val itemView = LayoutInflater.from(parent.context) 9 .inflate(R.layout.player_score_view, parent, false) 10 return PlayerScoreViewHolder(itemView) 11 } 12 13 // 4: ViewHolderが表示されるときの処理 14 override fun onBindViewHolder(holder: PlayerScoreViewHolder, position: Int) { 15 val name = data[position] 16 holder.itemView.findViewById<TextView>(R.id.player_name).text = name 17 } 18 19 // 5: 表示するアイテムの個数を返す処理 20 override fun getItemCount(): Int { 21 return data.size 22 } 23}
補足情報(FW/ツールのバージョンなど)
Android 4.1, Windows10
あなたの回答
tips
プレビュー