私は Kotlin でアプリを開発しています (kotlin について知らない場合でも、Android/Java の経験を手伝っていただけると確信しています)。
詳細:
アプリにスピナーがありますが、ポップアップするとクリックに反応せず、奇妙なビューが表示されることさえあります。そのため、OnItemSelected リスナーも起動されません。
AsyncRealm 呼び出しからスピナーを更新するメソッドを開始します。
コードは次のとおりです。
この関数全体が実行され、スピナーは null ではなく、リスナーをアタッチした後も null ではなくなります (デバッグ時)。
private fun updateCategorySpinner(result: MutableList<Category>) {
info("updateCategorySpinner")
val arrayAdapter: ArrayAdapter<String> = ArrayAdapter(ctx, R.layout.spinner_item, result.map{ it.category })
arrayAdapter.setDropDownViewResource(R.layout.spinner_item)
arrayAdapter.notifyDataSetChanged()
categorySpinner.adapter = arrayAdapter
info("updateCategorySpinner done")
}
result.map{..} は、カテゴリ名を持つ MutableList を作成します。
問題:
なぜそれらの矢印があるのか わかりませんが、使用するレイアウトに関係なく(単純なTextViewであっても)そこにあります
ここで何が欠けていますか?
リスナーを無効にしても役に立ちません。
Anko でリスナーをアタッチしても役に立ちません。
リスナーは、初期化時に 1 回起動します。それだけです。
ドロップダウンが開くと、完全に動かなくなります。
Anko でビューを作成しています。
R.layout.spinner-item
はただの<Textview>
.
class AddTodoFragmentUi:AnkoComponent<ViewGroup>,AnkoLogger {
override fun createView(ui: AnkoContext<ViewGroup>): View {
val editTextTheme = R.style.Widget_AppCompat_EditText
return with(ui){
verticalLayout {
info("inVerticalLayout")
verticalPadding =dip(15)
gravity = Gravity.CENTER
editText(editTextTheme){
id = R.id.txt_todo_desc
hintResource = R.string.txt_todo_desc_hint
width = matchParent
}
spinner(R.style.Widget_AppCompat_Spinner){
id= R.id.spinner_todo_category
prompt = "Select a Category"
}
button{
id = R.id.btn_add_todo
textResource = R.string.btn_add_todo
width = matchParent
}
button{
id = R.id.btn_del_todo
textResource = R.string.btn_del_todo
width = matchParent
visibility = View.INVISIBLE
}
}.applyRecursively {view -> when(view){
is EditText -> view.textSize = 20f
is Button -> view.textSize = 30f
}
}
}
}
画像: