Я учусь Kotlin, у меня есть Activity с вращателем и textField, я могу загрузить данные из Firebase. Проблема в том, что когда я отображаю данные внутри счетчика, я вижу все объекты в каждом дочернем элементе. Как я могу отобразить только один? в моем случае я хочу отображать только itemName. Вот мой код и структура моей БД:
class MainActivity(val i: Int) : AppCompatActivity() {
var labelText: TextView? = null
var spinnerItems: Spinner? = null
private val items = arrayListOf<Items>()
lateinit var itemDbRef: CollectionReference
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
labelText = findViewById(R.id.textView)
spinnerItems = findViewById(R.id.mySpinner)
itemDbRef = FirebaseFirestore.getInstance().collection(ITEM_REF)
getItems()
}
fun getItems() {
itemDbRef.get().addOnSuccessListener { snapshot ->
for (document in snapshot.documents) {
val data = document.data
val itemName = data!![ITEM_NAME] as String
val itemCode = data[ITEM_CODE] as String
val newItemList = Items(itemName, itemCode)
items.add(newItemList)
println(newItemList)
}
val arrayAdapter = ArrayAdapter(this@MainActivity, android.R.layout.simple_spinner_item, items.map { it.itemName })
// I need to display the name only
spinnerItems?.adapter = arrayAdapter
spinnerItems?.onItemSelectedListener = object : OnItemSelectedListener {
override fun onItemSelected(adapterView: AdapterView<*>, view: View, i: Int, l: Long) {
val name = items[i].itemName
labelText?.text = "$name"
}
override fun onNothingSelected(parent: AdapterView<*>?) {}
}
}
}
fun onCancelled(databaseError: DatabaseError) {}
}
Класс
data class Items constructor(
val itemName: String, val itemCode: String
)
БД Firebase
collection/AutoID/itemCode: "item1"
itemName: "item2"
collection/AutoID/itemCode: "item3"
itemName: "item4"
любая помощь очень ценится.