Android 如何根据列表显示包含数字的图像
我想显示一定数量的图像,其中包含一个数字,这取决于列表。列表最多由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 以下屏幕截图显示了行布局文件(将在回收器视图中查看) 这个截图显示了一个“真实”的例子 我使用的代码包含了太多的样板文件,我非常确信比我聪明的人会有更好的解决方案。所以我的问题是,我如何改进它以使其更短/更高效? 这是适配器中使用的代码: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 以下屏幕截图显示了行布局文件(将在回收器视图中查看) 这
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>()