Android Dropdown List with Spinner

举报
yd_221104950 发表于 2021/04/09 00:45:06 2021/04/09
【摘要】 Demo If you want implement a simple drop down list. Here you go. Spinner is used to select one value from a set of values in Android. Android Spinner is associated with AdapterView, so ...

Demo

If you want implement a simple drop down list. Here you go.
Spinner is used to select one value from a set of values in Android. Android Spinner is associated with AdapterView, so that we need to set a adapter class with the Spinner.
Let’s code!

It consists of a TextView and a Spinner in the following layout file:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <TextView android:id="@+id/tvSelectedItem" android:layout_width="0dp" android:layout_height="wrap_content" android:text="Hello World!" android:gravity="center" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> <Spinner android:id="@+id/spDropdownList" android:layout_width="0dp" android:layout_height="wrap_content" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@id/tvSelectedItem"/>

</androidx.constraintlayout.widget.ConstraintLayout>

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

Following snippet shows how to associate a adapter to Spinner:

 private fun prepareSpinnerAdapter(){ spinnerAdapter = ArrayAdapter(this@MainActivity,android.R.layout.simple_spinner_dropdown_item,spinnerDropdownList) spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) spinner.adapter = spinnerAdapter spinner.onItemSelectedListener = object: AdapterView.OnItemSelectedListener{ override fun onItemSelected( parent: AdapterView<*>?, view: View?, position: Int, id: Long ) { tvSelectedItem.text = parent?.getItemAtPosition(position).toString() } override fun onNothingSelected(parent: AdapterView<*>?) { TODO("Not yet implemented") } } }


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

We register a listener to Spinner. It gets the value selected by clicking.It’ll show on the TextView component.
Following code is to prepare data for Spinner:

private fun prepareDataForSpinner(){ for(i in 1 until 10){ spinnerDropdownList.add("Item $i") } }

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

All code of MainActivity.java is here:

package com.example.dropdownlist

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.AdapterView
import android.widget.ArrayAdapter
import android.widget.Spinner
import android.widget.TextView

class MainActivity : AppCompatActivity() { private lateinit var tvSelectedItem: TextView private lateinit var spinner:Spinner private val spinnerDropdownList:MutableList<String> =  mutableListOf() private lateinit var spinnerAdapter:ArrayAdapter<String> override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) spinner = findViewById(R.id.spDropdownList) tvSelectedItem = findViewById(R.id.tvSelectedItem) prepareDataForSpinner() prepareSpinnerAdapter() } private fun prepareDataForSpinner(){ for(i in 1 until 10){ spinnerDropdownList.add("Item $i") } } private fun prepareSpinnerAdapter(){ spinnerAdapter = ArrayAdapter(this@MainActivity,android.R.layout.simple_spinner_dropdown_item,spinnerDropdownList) spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) spinner.adapter = spinnerAdapter spinner.onItemSelectedListener = object: AdapterView.OnItemSelectedListener{ override fun onItemSelected( parent: AdapterView<*>?, view: View?, position: Int, id: Long ) { tvSelectedItem.text = parent?.getItemAtPosition(position).toString() } override fun onNothingSelected(parent: AdapterView<*>?) { TODO("Not yet implemented") } } }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51

文章来源: blog.csdn.net,作者:WongKyunban,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_40763897/article/details/115461038

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。