Проблема с работой OnItemClickListener - PullRequest
0 голосов
/ 18 февраля 2019

Я работаю над небольшим приложением и использую собственный просмотр списка с изображением и заголовком, но не могу заставить работать OnItemClickListener.Я следовал различным руководствам, и мой список работает нормально, но я постоянно получаю ошибки в OnItemClickListener.

Может кто-нибудь помочь мне с этим, пожалуйста

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val listView = findViewById<ListView>(R.id.lvMain)
        listView.adapter = MyAdapter(this)
        listView.setOnItemClickListener(  ...  ){      <-- Where everything goes wrong

        }
    }

    private class MyAdapter(context: Context) : BaseAdapter() {

        val lvIcon = arrayOf(R.drawable.asterisk, R.drawable.numeric, R.drawable.billiards, R.drawable.dice_6, R.drawable.coin, R.drawable.palette)
        val lvList = arrayOf("Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 6")

        private val mContext: Context = context

        override fun getView(i: Int, convertView: View?, parent: ViewGroup?): View {
            val layout = LayoutInflater.from(mContext)
            val rows = layout.inflate(R.layout.listview_rows, parent, false)

            val listItems = rows.findViewById<TextView>(R.id.lv_list)
            val iconItems = rows.findViewById<ImageView>(R.id.lv_icon)
            listItems.text = lvList.get(i)
            iconItems.setImageResource(lvIcon[i])
            return rows
        }

        override fun getItem(position: Int): Any {
            return "STRING" //To change body of created functions use File | Settings | File Templates.
        }

        override fun getItemId(position: Int): Long {
            return position.toLong()
        }

        override fun getCount(): Int {
            return lvList.count()
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

Используйте это

   listView.setOnItemClickListener { parent, view, position, l ->
        //your code   
          Toast.makeText(applicationContext(),
                "Click ListItem Number " + position, Toast.LENGTH_LONG)
                .show(); 
   }
0 голосов
/ 18 февраля 2019

Вам не нужны скобки (...)

listView.setOnItemClickListener{     
   // your code here
}

вам следует рассмотреть возможность изучения лямбд в котлине

...