>source

Kotlin을 사용하여 Android 앱에서 다음 ListView를 복제하려고 합니다. https://github.com/bidrohi/KotlinListView.

안타깝게도 스스로 해결할 수 없는 오류가 발생합니다. 내 code는 다음과 같습니다.

MainActivity.kt:
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    val listView= findViewById(R.id.list) as ListView
    listView.adapter= ListExampleAdapter(this)
}
private class ListExampleAdapter(context: Context) : BaseAdapter() {
    internal var sList= arrayOf("Eins", "Zwei", "Drei")
    private  val mInflator: LayoutInflater
    init {
        this.mInflator= LayoutInflater.from(context)
    }
    override fun getCount(): Int {
        return sList.size
    }
    override fun getItem(position: Int): Any {
        return sList[position]
    }
    override fun getItemId(position: Int): Long {
        return position.toLong()
    }
    override fun getView(position: Int, convertView: View?, parent: ViewGroup): View? {
        val view: View?
        val vh: ListRowHolder
        if(convertView== null) {
            view= this.mInflator.inflate(R.layout.list_row, parent, false)
            vh= ListRowHolder(view)
            view.tag= vh
        } else {
            view= convertView
            vh= view.tag as ListRowHolder
        }
        vh.label.text= sList[position]
        return view
    }
}
private class ListRowHolder(row: View?) {
    public val label: TextView
    init {
        this.label= row?.findViewById(R.id.label) as TextView
    }
}
}

레이아웃은 다음과 같습니다.

내가 받는 전체 오류 메시지는 다음과 같습니다. 오류:(92, 31) 유형 추론 실패: fun findViewById(p0: Int): T! 명시적으로 지정하십시오.

무엇이든 도움을 주시면 감사하겠습니다.

this.label= ... as TextView를 this.label= row?.findViewById로 변경하고 val listView= ...와 유사하게 변경할 수 있습니까? 이 경우에 적절한 답변을 할 수 있도록 이것이 작동하는지 알려주십시오.

Christian Brüggemann2022-01-25 21:00:14

오류가 발생하는 행은 무엇입니까?

voddan2022-01-25 21:00:14

더 작은 예를 들어 문제를 설명할 수 있습니까?

voddan2022-01-25 21:00:14

@ChristianBrüggemann 이와 같이: i.imgur.com/ZeWKjt5.png 및 이것: i.imgur.com/Can7w0p.png ? 수정 사항에 다음과 같은 오류가 있습니다. i.imgur.com/qqPAjrL.png

Timo Güntner2022-01-25 21:00:14

this.label= row?.findViewById(R.id.label)을 TextView로 사용해보십시오.

Alf Moh2022-01-25 21:00:14
  • 이전 javascript : "require('express')()"를 사용하지 않는 이유
  • 다음 Java Netbeans를 사용하여 getGeoLocation twitter4j를 사용하여 MySQL로 데이터를 가져오는 방법