[解決済み] 「KotlinとAndroidで「パラメータTを推測するのに十分な情報がありません。
質問
Kotlinを使用したAndroidアプリで、以下のListViewを再現しようとしています。 https://github.com/bidrohi/KotlinListView .
残念ながら、自分では解決できないエラーが発生しました。 以下は私のコードです。
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
}
}
}
レイアウトはこの通りです。 https://github.com/bidrohi/KotlinListView/tree/master/app/src/main/res/layout
私が受け取っている完全なエラーメッセージはこれです。 Error:(92, 31) Type inference failed: fun findViewById(p0: Int)のパラメータTを推論するための十分な情報がありません。T! 明示的に指定してください。
何かとお世話になりますが、よろしくお願いします。
どのように解決するのですか?
API level 26 (またはそれ以上) を使用している必要があります。このバージョンでは
View.findViewById()
- はこちら
https://developer.android.com/about/versions/oreo/android-8.0-changes#fvbi-signature
というわけで、あなたの場合
findViewById
の結果があいまいな場合は、型を指定する必要があります。
1/変更
val listView = findViewById(R.id.list) as ListView
を
val listView = findViewById<ListView>(R.id.list)
2/ 変更
this.label = row?.findViewById(R.id.label) as TextView
を
this.label = row?.findViewById<TextView>(R.id.label) as TextView
2/では、キャストが必要なのは
row
がnullableだからです。もし
label
も nullable であった場合、あるいは
row
をnullableでなくすれば必要ないでしょう。
関連
-
[解決済み】Android 8:クリアテキストのHTTPトラフィックが許可されない
-
[解決済み] Androidのgravityとlayout_gravityの違いは何ですか?
-
[解決済み] Androidで現在の時刻と日付を取得する方法
-
[解決済み] Androidでファイルをダウンロードし、ProgressDialogで進捗を表示する。
-
[解決済み] Android - タイトルバーに戻るボタンが表示される
-
[解決済み] getApplication()、getApplicationContext()、getBaseContext()、someClass.thisの違いと使い分け。
-
[解決済み] 文字サイズとアンドロイドの画面サイズの違い
-
[解決済み] AndroidのimageviewがmaxWidthを無視する?
-
[解決済み] BackStackでFragment Animationを逆再生するには?
-
[解決済み] android:fontFamily="sans-serif-light "と同等の機能をJavaコードで実現するには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] AndroidにおけるViewPager2の適切な実装
-
[解決済み] Eclipseでのandroid:configChangesでのAdmobエラー
-
[解決済み] アンドロイドアプリのユーザーデータを消去する
-
[解決済み] Android Navigation Architecture Component - 現在表示されているフラグメントを取得する
-
[解決済み] wrap_contentでRelativeLayoutがフルスクリーンになってしまう
-
[解決済み] XMLで矩形を描画できますか?
-
[解決済み] 文字サイズとアンドロイドの画面サイズの違い
-
[解決済み] AndroidでTextViewの下にアンダーラインを引くには
-
[解決済み] Androidでユーザーの非アクティブを検出する方法
-
[解決済み] Android端末のシリアルナンバーを調べるには?