Отображение данных Firebase внутри счетчика - PullRequest
0 голосов
/ 17 марта 2020

Я учусь 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"

любая помощь очень ценится.

1 Ответ

0 голосов
/ 18 марта 2020

попробуйте это ниже

val arrayAdapter = ArrayAdapter(this@MainActivity, android.R.layout.simple_spinner_item, items.map {it.itemName})
...