前提・実現したいこと
KotlinでAndroidAppを作成しています。実現したいことはviewHolderをクリックした際にviewHolder.titleView.requestFocus()でフォーカスを当ててEditTextに文字を入力すること。
発生している問題・エラーメッセージ
発生した問題はviewHolderをクリックした際にviewHolder.titleView.requestFocus()でフォーカスが当たるわけですが、キーボードが開いて直ぐに閉じてしまう現象が発生しています。尚コンパイルエラーメッセージはありません。
該当のソースコード
kotlin
1 class MyArrayAdapter(context: Context, resource: Int) : 2 ArrayAdapter<ListItem>(context, resource) { 3 4 private var inflater: LayoutInflater? = 5 context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater? 6 7 override fun getView(position: Int, convertView: View?, parent: ViewGroup): View { 8 9 var viewHolder: ViewHolder? = null 10 var view = convertView 11 12 if (view == null) { 13 14 view = inflater!!.inflate(R.layout.student_box, parent, false) 15 16 viewHolder = ViewHolder( 17 view.findViewById(R.id.textView4), 18 view.findViewById(R.id.button_hozon), 19 view.findViewById(R.id.button_0) 20 ) 21 view.tag = viewHolder 22 } else { 23 viewHolder = view.tag as ViewHolder 24 } 25 viewHolder.titleView.isEnabled = false 26 var flag = true 27 28 viewHolder.descriptionView.setOnClickListener { 29 30 viewHolder.titleView.requestFocus() 31 32 val inputMethodManager = 33 getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager 34 inputMethodManager.showSoftInput(viewHolder.titleView, 0) 35 36 viewHolder.titleView.isEnabled = true 37 viewHolder.descriptionView.text = "保存" 38 39 if (flag) { 40 41 flag = false 42 43 } else { 44 45 flag = true 46 } 47 } 48 return view!! 49 } 50 51 val arrayAdapter = MyArrayAdapter(this, 0).apply { 52 add(ListItem("", "編集")) 53 } 54 55 val ButtonTuika = findViewById<Button>(R.id.button_tuika) 56 val listView: ListView = findViewById(R.id.listview) 57 58 ButtonTuika.setOnClickListener { 59 60 listView.adapter = arrayAdapter 61 62 } 63 } 64}
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー