android - Adapter.getView Kotlin android 参数 convertView 上的 IllegalArgumentException

标签 android listview kotlin

java.lang.IllegalArgumentException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, parameter convertView
Adapter.getView
 at android.widget.AbsListView.obtainView(AbsListView.java:2346)
        at android.widget.ListView.makeAndAddView(ListView.java:1876)
        at android.widget.ListView.fillDown(ListView.java:702)
        at android.widget.ListView.fillFromTop(ListView.java:763)
        at android.widget.ListView.layoutChildren(ListView.java:1671)
        at android.widget.AbsListView.onLayout(AbsListView.java:2148)

这是android的logcat。 我尝试使用 java 它工作正常,基本适配器在 Adapter 或其他方面有问题。 我尝试使用 public constructor 和 array list count 3 发现我检查了它。总是在 getView

崩溃

MyAdapter 代码::

   inner class MyAppAdapter constructor(private val parkingList: ArrayList<App>, private val mContext: Context) : BaseAdapter() {

        override fun getCount(): Int {
            return this.parkingList.size
        }

        override fun getItem(position: Int): Any {
            return position
        }

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

        override fun getView(position: Int, convertView: View, parent: ViewGroup): View? {
            val viewHolder: ViewHolder
            var rowView: View? = convertView
            if (rowView == null) {
                rowView = LayoutInflater.from(mContext).inflate(R.layout.item_more_apps, parent, false)
                viewHolder = ViewHolder()
                viewHolder.appIcon = rowView.findViewById(R.id.appIcon)
                viewHolder.appName = rowView.findViewById(R.id.appName)
                viewHolder.appDescription = rowView.findViewById(R.id.appDescription)
                rowView.tag = viewHolder
            } else {
                viewHolder = convertView.tag as ViewHolder
            }
            viewHolder.appName!!.text = String.format("%s", this.parkingList[position].name)
            viewHolder.appDescription!!.text = String.format("%s", this.parkingList[position].description)
            Glide.with(applicationContext).load(this.parkingList[position].icon).into(viewHolder.appIcon!!)
            rowView?.setOnClickListener {
                try {
                    startActivity(Intent("android.intent.action.VIEW", Uri.parse("market://details?id=" + this@MyAppAdapter.parkingList[position].link)))
                } catch (e: ActivityNotFoundException) {
                    startActivity(Intent("android.intent.action.VIEW", Uri.parse("http://play.google.com/store/apps/details?id=" + this@MyAppAdapter.parkingList[position].link)))
                }
            }
            return rowView
        }

        inner class ViewHolder {
            var appDescription: TextView? = null
            var appIcon: ImageView? = null
            var appName: TextView? = null
        }
    }

用于 AsyncTask -> onPostExecute

  myAppAdapter = MyAppAdapter(appArrayList, applicationContext)
            lvPoses!!.adapter = myAppAdapter

变量是这样清除的

   lateinit var myAppAdapter: MyAppAdapter
    private val appArrayList = ArrayList<App>()
    private var lvPoses: ListView? = null

最佳答案

convertView 如果尚未创建 View ,则可以为 null。修复参数声明:

override fun getView(position: Int, convertView: View?, parent: 
     ViewGroup): View? {
...
}

关于android - Adapter.getView Kotlin android 参数 convertView 上的 IllegalArgumentException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50705466/

相关文章:

android - 在 Android 的 ListView 中单击一个项目

kotlin - 使用密封类时,MutableSet 不会防止重复内容

Spring:Azure 功能管理器功能切换 Microsoft.Targeting bean 未找到

kotlin - 如何使用不同数据类的属性更新 kotlin 数据类

android - ActionBarSherlock 开关切换

java - 有没有办法检查应用程序的安装位置

Android Lint 检查 - StringFormatInvalid : what is wrong on %d%% remaining?

android - 我怎样才能让 recyclerView 在 android 约束布局中占据一半的屏幕(最大)?

c# - 在ListView中强制显示滚动条?

android - 我可以在不使用 ScrollView/ListView 的情况下使用 Pull to Refresh 吗?