Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何根据列表显示包含数字的图像_Android_List_Kotlin_Textview - Fatal编程技术网

Android 如何根据列表显示包含数字的图像

Android 如何根据列表显示包含数字的图像,android,list,kotlin,textview,Android,List,Kotlin,Textview,我想显示一定数量的图像,其中包含一个数字,这取决于列表。列表最多由4个整数组成,例如:(a)[4,2,2]或(b)[]或(c)[3,1]等。(a)示例应显示3个图像,其中分别包含数字(4、2和2),(b)示例应仅显示文本“无”,而(c)示例应显示2个图像,其中分别包含数字3和1 我采用的方法是使用4个文本视图和一个背景图像(菱形),根据列表的大小,我将可见性更改为View.VISIBLE to View.go,并将文本更改为相应的int 以下屏幕截图显示了行布局文件(将在回收器视图中查看) 这

我想显示一定数量的图像,其中包含一个数字,这取决于列表。列表最多由4个整数组成,例如:(a)[4,2,2]或(b)[]或(c)[3,1]等。(a)示例应显示3个图像,其中分别包含数字(4、2和2),(b)示例应仅显示文本“无”,而(c)示例应显示2个图像,其中分别包含数字3和1

我采用的方法是使用4个文本视图和一个背景图像(菱形),根据列表的大小,我将可见性更改为View.VISIBLE to View.go,并将文本更改为相应的int

以下屏幕截图显示了行布局文件(将在回收器视图中查看)

这个截图显示了一个“真实”的例子

我使用的代码包含了太多的样板文件,我非常确信比我聪明的人会有更好的解决方案。所以我的问题是,我如何改进它以使其更短/更高效? 这是适配器中使用的代码:

        private fun setDecoIcons(slots: List<Slot>) {
            when(slots.size) {
                0 -> {
                    binding.textViewRowArmorListItemNumberOfDecorationsDeco1.visibility = View.VISIBLE
                    binding.textViewRowArmorListItemNumberOfDecorationsDeco2.visibility = View.GONE
                    binding.textViewRowArmorListItemNumberOfDecorationsDeco3.visibility = View.GONE
                    binding.textViewRowArmorListItemNumberOfDecorationsDeco4.visibility = View.GONE

                    binding.textViewRowArmorListItemNumberOfDecorationsDeco1.setBackgroundResource(0)
                    binding.textViewRowArmorListItemNumberOfDecorationsDeco1.setText(R.string.textView_rowArmorListItem_deco_none)
                }
                1 -> {
                    binding.textViewRowArmorListItemNumberOfDecorationsDeco1.visibility = View.VISIBLE
                    binding.textViewRowArmorListItemNumberOfDecorationsDeco2.visibility = View.GONE
                    binding.textViewRowArmorListItemNumberOfDecorationsDeco3.visibility = View.GONE
                    binding.textViewRowArmorListItemNumberOfDecorationsDeco4.visibility = View.GONE

                    binding.textViewRowArmorListItemNumberOfDecorationsDeco1.setBackgroundResource(R.drawable.ll_icon_deco)
                    binding.textViewRowArmorListItemNumberOfDecorationsDeco1.text = slots[0].slotRank.toString()
                }
                2 -> {
                    binding.textViewRowArmorListItemNumberOfDecorationsDeco1.visibility = View.VISIBLE
                    binding.textViewRowArmorListItemNumberOfDecorationsDeco2.visibility = View.VISIBLE
                    binding.textViewRowArmorListItemNumberOfDecorationsDeco3.visibility = View.GONE
                    binding.textViewRowArmorListItemNumberOfDecorationsDeco4.visibility = View.GONE

                    binding.textViewRowArmorListItemNumberOfDecorationsDeco1.setBackgroundResource(R.drawable.ll_icon_deco)
                    binding.textViewRowArmorListItemNumberOfDecorationsDeco1.text = slots[0].slotRank.toString()
                    binding.textViewRowArmorListItemNumberOfDecorationsDeco2.text = slots[1].slotRank.toString()
                }
                3 -> {
                    binding.textViewRowArmorListItemNumberOfDecorationsDeco1.visibility = View.VISIBLE
                    binding.textViewRowArmorListItemNumberOfDecorationsDeco2.visibility = View.VISIBLE
                    binding.textViewRowArmorListItemNumberOfDecorationsDeco3.visibility = View.VISIBLE
                    binding.textViewRowArmorListItemNumberOfDecorationsDeco4.visibility = View.GONE


                    binding.textViewRowArmorListItemNumberOfDecorationsDeco1.setBackgroundResource(R.drawable.ll_icon_deco)
                    binding.textViewRowArmorListItemNumberOfDecorationsDeco1.text = slots[0].slotRank.toString()
                    binding.textViewRowArmorListItemNumberOfDecorationsDeco2.text = slots[1].slotRank.toString()
                    binding.textViewRowArmorListItemNumberOfDecorationsDeco3.text = slots[2].slotRank.toString()
                }
                4 -> {
                    binding.textViewRowArmorListItemNumberOfDecorationsDeco1.visibility = View.VISIBLE
                    binding.textViewRowArmorListItemNumberOfDecorationsDeco2.visibility = View.VISIBLE
                    binding.textViewRowArmorListItemNumberOfDecorationsDeco3.visibility = View.VISIBLE
                    binding.textViewRowArmorListItemNumberOfDecorationsDeco4.visibility = View.VISIBLE

                    binding.textViewRowArmorListItemNumberOfDecorationsDeco1.setBackgroundResource(R.drawable.ll_icon_deco)
                    binding.textViewRowArmorListItemNumberOfDecorationsDeco1.text = slots[0].slotRank.toString()
                    binding.textViewRowArmorListItemNumberOfDecorationsDeco2.text = slots[1].slotRank.toString()
                    binding.textViewRowArmorListItemNumberOfDecorationsDeco3.text = slots[2].slotRank.toString()
                    binding.textViewRowArmorListItemNumberOfDecorationsDeco4.text = slots[3].slotRank.toString()
                }
            }
        }
私人娱乐图标(插槽:列表){
时间(插槽大小){
0 -> {
binding.textViewRowArmorlistItemNumberOfDecorationsDec1.visibility=View.VISIBLE
binding.textViewRowArmorlistItemNumberOfDecorationsDec2.visibility=View.GONE
binding.textViewRowArmorListItemNumberOfDecorationsDeco3.visibility=View.GONE
binding.textViewRowArmorlistItemNumberOfDecorationsDec4.visibility=View.GONE
binding.textViewRowArmorListItemNumberOfDecorationsDec1.setBackgroundResource(0)
binding.textViewRowArmorListItemNumberOfDecorationsDec1.setText(R.string.textView\u rowArmorListItem\u deco\u none)
}
1 -> {
binding.textViewRowArmorlistItemNumberOfDecorationsDec1.visibility=View.VISIBLE
binding.textViewRowArmorlistItemNumberOfDecorationsDec2.visibility=View.GONE
binding.textViewRowArmorListItemNumberOfDecorationsDeco3.visibility=View.GONE
binding.textViewRowArmorlistItemNumberOfDecorationsDec4.visibility=View.GONE
binding.textViewRowArmorListitemNumberOfDecorationsDec1.setBackgroundResource(R.drawable.ll_图标装饰)
binding.textViewRowArmorListitemNumberOfDecorationsDec1.text=slots[0]。slotRank.toString()
}
2 -> {
binding.textViewRowArmorlistItemNumberOfDecorationsDec1.visibility=View.VISIBLE
binding.textViewRowArmorlistItemNumberOfDecorationsDec2.visibility=View.VISIBLE
binding.textViewRowArmorListItemNumberOfDecorationsDeco3.visibility=View.GONE
binding.textViewRowArmorlistItemNumberOfDecorationsDec4.visibility=View.GONE
binding.textViewRowArmorListitemNumberOfDecorationsDec1.setBackgroundResource(R.drawable.ll_图标装饰)
binding.textViewRowArmorListitemNumberOfDecorationsDec1.text=slots[0]。slotRank.toString()
binding.textViewRowArmorListitemNumberOfDecorationsDec2.text=slots[1]。slotRank.toString()
}
3 -> {
binding.textViewRowArmorlistItemNumberOfDecorationsDec1.visibility=View.VISIBLE
binding.textViewRowArmorlistItemNumberOfDecorationsDec2.visibility=View.VISIBLE
binding.textViewRowArmorListItemNumberOfDecorationsDeco3.visibility=View.VISIBLE
binding.textViewRowArmorlistItemNumberOfDecorationsDec4.visibility=View.GONE
binding.textViewRowArmorListitemNumberOfDecorationsDec1.setBackgroundResource(R.drawable.ll_图标装饰)
binding.textViewRowArmorListitemNumberOfDecorationsDec1.text=slots[0]。slotRank.toString()
binding.textViewRowArmorListitemNumberOfDecorationsDec2.text=slots[1]。slotRank.toString()
binding.textViewRowArmorListItemNumberOfDecorationsDeco3.text=插槽[2].slotRank.toString()
}
4 -> {
binding.textViewRowArmorlistItemNumberOfDecorationsDec1.visibility=View.VISIBLE
binding.textViewRowArmorlistItemNumberOfDecorationsDec2.visibility=View.VISIBLE
binding.textViewRowArmorListItemNumberOfDecorationsDeco3.visibility=View.VISIBLE
binding.textViewRowArmorlistItemNumberOfDecorationsDec4.visibility=View.VISIBLE
binding.textViewRowArmorListitemNumberOfDecorationsDec1.setBackgroundResource(R.drawable.ll_图标装饰)
binding.textViewRowArmorListitemNumberOfDecorationsDec1.text=slots[0]。slotRank.toString()
binding.textViewRowArmorListitemNumberOfDecorationsDec2.text=slots[1]。slotRank.toString()
binding.textViewRowArmorListItemNumberOfDecorationsDeco3.text=插槽[2].slotRank.toString()
binding.textViewRowArmorListItemNumberOfDecorationsDeco4.text=slots[3]。slotRank.toString()
}
}
}
使用数据绑定
你的图像+分数:

<androidx.coordinatorlayout.widget.CoordinatorLayout
            android:id="@+id/highScoreFab"
            android:layout_width="70dp"
            android:layout_height="70dp"
            android:layout_marginBottom="24dp"
            android:background="@drawable/high_score"
            android:clickable="true"
            android:focusable="true"
            android:foregroundGravity="center"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:elevation="6dp"
                android:fontFamily="sans-serif-black"
                android:text="@={scoreVM.highCount}"
                android:textColor="@color/design_default_color_error"
                android:textSize="18sp" />

视图模型:

var highCount = MutableLiveData<Int>()
var highCount=MutableLiveData()
var highCount = MutableLiveData<Int>()