У меня есть этот класс адаптера RecyclerView, в котором есть метод offsetRound.
class LeagueRoundAdapter(private val rounds: List<RoundVO>) : RecyclerView.Adapter<MatchViewHolder>() {
private var round: Int = 0
set(value) {
matches = rounds[value].matches
notifyDataSetChanged()
}
fun offsetRound(offset: Int): Int {
var newround = round + offset;
if (newround !in 0 until rounds.size) {
return round
}
round = newround
return newround
}
private var matches = rounds[round].matches
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MatchViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_match, parent, false)
return MatchViewHolder(view)
}
override fun getItemCount(): Int {
return rounds[round].matches.size
}
override fun onBindViewHolder(holder: MatchViewHolder, position: Int) {
val matchVO = matches[position]
holder.bind(matchVO)
}
}
Когда я нажимаю кнопку «предыдущий / следующий», я хочу увеличить / уменьшить текущий раунд:
private fun setupEvents(){
btn_next_round.setOnClickListener{
val round = getAdapter().offsetRound(Integer.parseInt(btn_next_round.tag as String))
txt_round_info.text = "$round"
}
btn_prev_round.setOnClickListener{
val round = getAdapter().offsetRound(Integer.parseInt(btn_prev_round.tag as String))
txt_round_info.text = "$round"
}
}
теги кнопки «1» и «-1».
Проблема в том, что в этой строке round = newround
переменная round не принимает значение newround, как вы можете видеть вэтот отладочный отпечаток:
До назначения:
После:
Я сейчас немного сонный.Я делаю что-то глупое, что я не могу понять?
РЕДАКТИРОВАТЬ
Я поставил журнал до и после:
println("1. round: $round newround: $newround")
round = newround
println("2. round: $round newround: $newround")
println("----")
Нажав кнопку несколько раз:
2018-12-18 23:08:11.830 3349-3349/com.github.alexpfx.soccerchampionship I/System.out: 1. round: 0 newround: 1
2018-12-18 23:08:11.830 3349-3349/com.github.alexpfx.soccerchampionship I/System.out: 2. round: 0 newround: 1
2018-12-18 23:08:11.830 3349-3349/com.github.alexpfx.soccerchampionship I/System.out: ----
2018-12-18 23:08:11.856 3349-3354/com.github.alexpfx.soccerchampionship I/zygote64: Do full code cache collection, code=504KB, data=333KB
2018-12-18 23:08:11.857 3349-3354/com.github.alexpfx.soccerchampionship I/zygote64: After code cache collection, code=496KB, data=281KB
2018-12-18 23:08:14.910 3349-3349/com.github.alexpfx.soccerchampionship I/System.out: 1. round: 0 newround: 1
2018-12-18 23:08:14.911 3349-3349/com.github.alexpfx.soccerchampionship I/System.out: 2. round: 0 newround: 1
2018-12-18 23:08:14.911 3349-3349/com.github.alexpfx.soccerchampionship I/System.out: ----
2018-12-18 23:08:15.661 3349-3349/com.github.alexpfx.soccerchampionship I/System.out: 1. round: 0 newround: 1
2018-12-18 23:08:15.661 3349-3349/com.github.alexpfx.soccerchampionship I/System.out: 2. round: 0 newround: 1
2018-12-18 23:08:15.661 3349-3349/com.github.alexpfx.soccerchampionship I/System.out: ----
2018-12-18 23:08:16.422 3349-3349/com.github.alexpfx.soccerchampionship I/System.out: 1. round: 0 newround: 1
2018-12-18 23:08:16.422 3349-3349/com.github.alexpfx.soccerchampionship I/System.out: 2. round: 0 newround: 1
2018-12-18 23:08:16.423 3349-3349/com.github.alexpfx.soccerchampionship I/System.out: ----