Kotlin ListView基于字符串的项目单击

问题描述 投票:-1回答:2

是否有办法检查在简单的ListView中单击了哪个字符串?我希望此ListView中的每个项目都会有所不同(单击时),但是我没有看到任何相关的/有用的教程。我知道为此需要when块,但不确定实现它的最佳方法。

class MainActivity : AppCompatActivity() {

    var array = arrayOf("Melbourne", "Vienna", "Vancouver", "Toronto", "Calgary", "Adelaide", "Perth", "Auckland", "Helsinki", "Hamburg", "Munich", "New York", "Sydney", "Paris", "Cape Town", "Barcelona", "London", "Bangkok")

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val adapter = ArrayAdapter(this,
                R.layout.listview_item, array)

        val listView:ListView = findViewById(R.id.listview_1)
        listView.setAdapter(adapter)

        listView.onItemClickListener = object : OnItemClickListener {

            override fun onItemClick(parent: AdapterView<*>, view: View,
                            position: Int, id: Long) {
                    ????
            }
        }

    }
} 

listview_item.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    android:id="@+id/relativelayout_listitem"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="top"
    android:baselineAligned="false"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <TextView android:id="@+id/listitem_title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:ellipsize="marquee"
        android:layout_below="@id/ll_title"
        android:fadingEdge="horizontal" />
</RelativeLayout>
android kotlin android-listview android-arrayadapter android-adapter
2个回答
0
投票

onItemClick()内部,position参数是数据集中被点击的位置。因此,您应该能够索引到数组中以获取被点击的字符串:

val tappedString = array[position] // will be "Vienna" when position is 1

0
投票

如果您不想使用positionarray,则可以从视图中获取文本。

尝试一下:

override fun onItemClick(parent: AdapterView<*>, view: View,
                        position: Int, id: Long) {
    val textClicked = (view as TextView).text.toString()
    // do what you want with the text now...
}
© www.soinside.com 2019 - 2024. All rights reserved.