Chip Group 侦听器在片段重新创建时更改芯片位置
Chip Group listener change chip position when fragment recreate
我正在以编程方式创建芯片。筹码已创建,但当应用程序停止 (未销毁) 并重新打开时,筹码在筹码组侦听器中的位置发生变化。
这是我的代码:
private lateinit var playlist: Array<Pair<String, String>>
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
for (item in playlist){
createChip(item.first)
}}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
chip_group.setOnCheckedChangeListener { chipGroup, position ->
for (i in 0 until chipGroup.childCount){
val chip = chipGroup.getChildAt(i)
chip.isClickable = chip.id != chipGroup.checkedChipId
}
Toast.makeText(context, position.toString(), Toast.LENGTH_SHORT).show()
}}
fun createChip(name: String){
val chip = Chip(chip_group.context)
chip.text = name
chip.isClickable = true
chip.isCheckable = true
chip.isCheckedIconVisible = false
chip_group.addView(chip)
}
我希望芯片在应用程序重新打开时具有相同的位置,但位置反而增加了。
您正在将 id
与 position
混合使用。
onCheckedChanged(ChipGroup group, int checkedId)
是检查芯片发生变化时调用的接口方法
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
var index=0
for (item in playlist){
createChip(item.first,index++)
}}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
chip_group.setOnCheckedChangeListener { chipGroup, id ->
for (i in 0 until chipGroup.childCount){
val chip = chipGroup.getChildAt(i)
chip.isClickable = chip.id != chipGroup.checkedChipId
}
Toast.makeText(context, position.toString(), Toast.LENGTH_SHORT).show()
}}
fun createChip(name: String,index:Int){
val chip = Chip(chip_group.context)
chip.text = name
chip.isClickable = true
chip.isCheckable = true
chip.isCheckedIconVisible = false
chip.id=index //maybe you can use tag
chip_group.addView(chip)
}
我正在以编程方式创建芯片。筹码已创建,但当应用程序停止 (未销毁) 并重新打开时,筹码在筹码组侦听器中的位置发生变化。
这是我的代码:
private lateinit var playlist: Array<Pair<String, String>>
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
for (item in playlist){
createChip(item.first)
}}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
chip_group.setOnCheckedChangeListener { chipGroup, position ->
for (i in 0 until chipGroup.childCount){
val chip = chipGroup.getChildAt(i)
chip.isClickable = chip.id != chipGroup.checkedChipId
}
Toast.makeText(context, position.toString(), Toast.LENGTH_SHORT).show()
}}
fun createChip(name: String){
val chip = Chip(chip_group.context)
chip.text = name
chip.isClickable = true
chip.isCheckable = true
chip.isCheckedIconVisible = false
chip_group.addView(chip)
}
我希望芯片在应用程序重新打开时具有相同的位置,但位置反而增加了。
您正在将 id
与 position
混合使用。
onCheckedChanged(ChipGroup group, int checkedId)
是检查芯片发生变化时调用的接口方法
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
var index=0
for (item in playlist){
createChip(item.first,index++)
}}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
chip_group.setOnCheckedChangeListener { chipGroup, id ->
for (i in 0 until chipGroup.childCount){
val chip = chipGroup.getChildAt(i)
chip.isClickable = chip.id != chipGroup.checkedChipId
}
Toast.makeText(context, position.toString(), Toast.LENGTH_SHORT).show()
}}
fun createChip(name: String,index:Int){
val chip = Chip(chip_group.context)
chip.text = name
chip.isClickable = true
chip.isCheckable = true
chip.isCheckedIconVisible = false
chip.id=index //maybe you can use tag
chip_group.addView(chip)
}