d上参数convertView上的IllegalArgument

d上参数convertView上的IllegalArgument

本文介绍了Adapter.getView Kotlin android上参数convertView上的IllegalArgumentException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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,并且发现数组列表计数3已检查.总是在getView

This is logcat of android.I tried with java it's working fine base adapter something wrong in Adapter or other.I tried with the public constructor and also array list count 3 found i checked it. Alway it's crash at getView

MyAdapter代码::

MyAdapter Code::

   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=" + [email protected][position].link)))
                } catch (e: ActivityNotFoundException) {
                    startActivity(Intent("android.intent.action.VIEW", Uri.parse("http://play.google.com/store/apps/details?id=" + [email protected][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可以为null.修复参数声明:

convertView can be null if no view has been created yet. Fix parametr declaration:

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

这篇关于Adapter.getView Kotlin android上参数convertView上的IllegalArgumentException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-27 23:38