ciao!
specifico kotlin, ma in verità ho lo stesso problema in java.
ho una listview con un custom adapter:
quando clicco su una voce, vorrei prendere l'intero oggetto Book dall'adapter.codice:package com.mp.mpbook import android.content.Context import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.BaseAdapter import android.widget.TextView import java.util.* import kotlin.collections.ArrayList import kotlin.collections.HashMap class BookAdapter( private val context: Context, private val dataList: ArrayList<HashMap<String, String>> ) : BaseAdapter() { val inflater: LayoutInflater = this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater; var tempNameVersionList = ArrayList(dataList) override fun getCount(): Int { return dataList.size; } override fun getItem(position: Int): Int { return position; } override fun getItemId(position: Int): Long { return position.toLong(); } override fun getView(position: Int, convertView: View?, parent: ViewGroup): View { var dataitem = dataList[position]; val rowView = inflater.inflate(R.layout.list_row, parent, false); rowView.findViewById<TextView>(R.id.txtTitle).text = dataitem.get("title"); rowView.tag = position; return rowView; } fun filter(text: String?) { val text = text!!.toLowerCase(Locale.getDefault()); dataList.clear(); if (text.length == 0) { dataList.addAll(tempNameVersionList); } else { for (i in 0..tempNameVersionList.size - 1) { if (tempNameVersionList.get(i).get("title")!!.toLowerCase(Locale.getDefault()) .contains(text) ) { dataList.add(tempNameVersionList.get(i)); } } } notifyDataSetChanged(); } }
ho provato così vedendo diversi tutorial:
ma ottengo questo errore:codice:val listView = findViewById<ListView>(R.id.listView); listView.setOnItemClickListener { parent, view, position, id -> val b = parent.getItemAtPosition(position) as Book; }
codice:java.lang.ClassCastException: java.lang.Long cannot be cast to com.mp.mpbook.Book at com.mp.mpbook.MainActivity$onCreate$2.onItemClick(MainActivity.kt:42) at android.widget.AdapterView.performItemClick(AdapterView.java:318) at android.widget.AbsListView.performItemClick(AbsListView.java:1201) at android.widget.AbsListView$PerformClick.run(AbsListView.java:3178) at android.os.Handler.handleCallback(Handler.java:873) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:6898) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
l'errore l'ho capito, ma non ho capito se e come risolvere il problema!

					
					
					
						
  Rispondi quotando

