代码之家  ›  专栏  ›  技术社区  ›  Hussnain Haidar

芯片组侦听器在片段重新创建时更改芯片位置

  •  0
  • Hussnain Haidar  · 技术社区  · 6 年前

    我正在以编程方式创建一个芯片。芯片被创建,但当应用程序停止时 (未销毁) 再打开,芯片在芯片组监听器中的位置发生变化。

    这是我的代码:

    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)
    }
    

    我希望当应用程序重新打开时,芯片有相同的位置,但位置会增加。

    1 回复  |  直到 6 年前
        1
  •  0
  •   user5459652    6 年前

    你在搅拌 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)
    }