获取 Android Studio 中 onItemClickListener 中每一行的 id

Posted

技术标签:

【中文标题】获取 Android Studio 中 onItemClickListener 中每一行的 id【英文标题】:get id of each row in onItemClickListener in Android Studio 【发布时间】:2021-05-26 14:03:25 【问题描述】:

我需要获取listview.onItemClickListener 中每一行的id。使用位置会更容易,但我需要在我的应用程序中使用搜索栏。位置的问题是,如果我搜索 item2 并按下它,onItemClickListener 将看到它在行中的第一个(位置 0),它将设置布局 1 而不是布局 2。 我考虑过获取每一行的 Id 或类似的东西,并根据 id 设置布局。 我在谷歌上搜索过,但我似乎没有找到任何有用的东西

我该怎么做

我的主要活动:

package com.biskyy.caietdecantarikt



import android.content.Intent
import android.os.Bundle
import android.text.Editable
import android.text.TextWatcher
import android.view.Menu
import android.view.View
import android.widget.AdapterView
import android.widget.ArrayAdapter
import android.widget.EditText
import androidx.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() 

    private lateinit var adapter: ArrayAdapter<*>

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

        setSupportActionBar(findViewById(R.id.toolbar))

        val filter = findViewById<View>(R.id.srcFilter) as EditText

        adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, resources.getStringArray(R.array.cntArrays))
        lv_listView.adapter = adapter
        lv_listView.onItemClickListener = AdapterView.OnItemClickListener parent, view, position, id ->

//            val item: MainActivity = adapter.getItem(position) as MainActivity

            when(position) 
                0 -> 
                    val intCantare = Intent(this, cantare::class.java).apply 
                        putExtra("layout", R.layout.cnt1)
                    
                    startActivity(intCantare)
                
            

        
        lv_listView.emptyView = tv_emptyTextView

        filter.addTextChangedListener(object : TextWatcher 
            override fun beforeTextChanged(
                s: CharSequence,
                start: Int,
                count: Int,
                after: Int
            ) 
            

            override fun onTextChanged(
                s: CharSequence,
                start: Int,
                before: Int,
                count: Int
            ) 
                adapter.filter.filter(s)
            

            override fun afterTextChanged(s: Editable) 
        )

    

    override fun onCreateOptionsMenu(menu: Menu?): Boolean 
        menuInflater.inflate(R.menu.menu_main, menu)
        
        return super.onCreateOptionsMenu(menu)
    


【问题讨论】:

【参考方案1】:

lv_listView.onItemClickListener = AdapterView.OnItemClickListener 父级、视图、位置、id->

使用这个ID

【讨论】:

我该如何使用它?我在谷歌上搜索但没有。或者我只是瞎了 我想出了如何使用 Id 但我仍然有这个问题“位置的问题是,如果我搜索 item2 并按下它,onItemClickListener 将看到它在行中的第一个(位置 0),它将设置布局 1 而不是布局 2。" 在这种情况下,只在适配器内部创建一个点击监听器。示例:- site-valley.com/2021/02/10/…

以上是关于获取 Android Studio 中 onItemClickListener 中每一行的 id的主要内容,如果未能解决你的问题,请参考以下文章

android studio 从服务中获取 Activity 对象

在 Android Studio Firestore 中获取查询时出现错误

在 AsynTask (Android Studio) 中获取 EOFException [重复]

Android Studio中获取SHA1或MD5的方法

在 android studio 中获取 values.xml 的大小?

获取 Android Studio 中 onItemClickListener 中每一行的 id