Android Kotlin EditText框点击 获取列表数据
- 布局
在这里插入代码片
- <?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">
<EditText
android:id="@+id/ed_tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:drawableRight="@mipmap/up"
android:layout_margin="20dp"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
3.kotlin 代码 没有data bing 有具体业务需求自己改一下
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val edText = findViewById<EditText>(R.id.ed_tv)
edText.setOnClickListener(View.OnClickListener {
showListPopulWindow()
})
}
private lateinit var listPopupWindow: ListPopupWindow //懒加载
private fun showListPopulWindow() {
val edText = findViewById<EditText>(R.id.ed_tv)
val list = arrayOf("item1", "item2", "item3", "item4") //List方法可以自己抽出来动态添加数据
if (::listPopupWindow.isInitialized.not()) {// 判断 如果有就添加数据,没有创建就new 一个
listPopupWindow = ListPopupWindow(this)
listPopupWindow.setAdapter(
ArrayAdapter(
this,
android.R.layout.simple_list_item_1,
list
)
) //用android内置布局,或设计自己的样式
listPopupWindow.anchorView = edText //以哪个控件为基准,在该处以logId为基准
listPopupWindow.isModal = true
listPopupWindow.setOnItemClickListener { adapterView, view, i, l ->
//设置项点击监听
edText.setText(list[i]) //把选择的选项内容展示在EditText上
listPopupWindow.dismiss() //如果已经选择了,隐藏起来
}
}
listPopupWindow.show() //把ListPopWindow展示出来
}
```java
在这里插入代码片