【问题标题】:ArrayAdapter use Kotlin androidArrayAdapter 使用 Kotlin android
【发布时间】:2017-01-29 17:04:04
【问题描述】:

所以我正在学习 kotlin,现在我需要编写一个 ArrayAdapter,但是在尝试这样做时出现了一些错误:

convertView = vi.inflate(resource, null) 

kotlin 告诉我

Val 无法重新分配

在站点 kotline 中,我将 java 类转换为 kotlin 类,并尝试在此站点中做类似的事情。为什么会出现错误,我该如何解决?这是整个代码。

open class MyAdapter(context: Context, resource: Int, list: ArrayList<MyItems>) :
        ArrayAdapter<MyItems>(context, resource, list) {

    var resource: Int
    var list: ArrayList<MyItems>
    var vi: LayoutInflater

    init {
        this.resource = resource
        this.list = list
        this.vi = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
    }


    override fun getView(position: Int, convertView: View?, parent: ViewGroup): View? {
        var holder: ViewHolder

        if(convertView == null){
            convertView = vi.inflate(resource, null) //error in this line
            holder = ViewHolder()

            holder.image = convertView.findViewById(R.id.myImage) as ImageView?

            convertView.tag(holder) //error in this line

        } else {
            holder = convertView.tag as ViewHolder
        }

        return convertView
    }

    internal class ViewHolder {
        var image: ImageView? = null
    }

}

【问题讨论】:

    标签: android android-arrayadapter kotlin


    【解决方案1】:

    参数变量不能重新赋值,你需要创建一个局部变量来保存你返回的视图:

    override fun getView(position: Int, convertView: View?, parent: ViewGroup): View? {
        var holder: ViewHolder
        var retView: View
    
        if(convertView == null){
            retView = vi.inflate(resource, null)
            holder = ViewHolder()
    
            holder.image = retView.findViewById(R.id.myImage) as ImageView?
    
            retView.tag = holder
    
        } else {
            holder = convertView.tag as ViewHolder
            retView = convertView
        }
    
        return retView
    }
    

    【讨论】:

      猜你喜欢
      • 2020-10-02
      • 1970-01-01
      • 1970-01-01
      • 2021-12-28
      • 2012-04-20
      • 2012-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多