🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

1回答

1891閲覧

spinnerのアイテムをクリックしても反応しない

bamba

総合スコア2

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2021/03/24 11:03

## 実現したいこと
android studioでspinnerをつかって項目を選択,選択された項目をマテリアルデザインのTextfieldにsetTextしたいと考えています.

発生している問題

spinnerにsetOnItemSelectedListenerを設定しましたが,クリック時に特に反応がありませんでした.Logもでないためクリック時の処理ができていないのだと思います.どなたか原因のわかる方よろしくお願いいたします.

コード

元のコードが長かったため,明らかに関係がない箇所は省きました.

kotlin

1package com.example.appdoonelist 2 3import android.os.Bundle 4import android.util.Log 5import android.view.LayoutInflater 6import android.view.View 7import android.view.ViewGroup 8import android.widget.* 9import android.widget.AdapterView.OnItemLongClickListener 10import androidx.fragment.app.Fragment 11import androidx.lifecycle.ViewModelProviders 12import androidx.navigation.fragment.findNavController 13import com.google.android.material.datepicker.MaterialDatePicker 14import com.google.android.material.dialog.MaterialAlertDialogBuilder 15import com.google.android.material.floatingactionbutton.FloatingActionButton 16import com.google.android.material.textfield.TextInputEditText 17import java.text.SimpleDateFormat 18import java.util.* 19 20 21class DoneSecondFragment : Fragment() { 22 23 private val menuItems = mutableListOf<String>() 24 25 override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { 26 27 val view = inflater.inflate(R.layout.fragment_done_second, container, false) 28 29 30 val commentView = view.findViewById<TextInputEditText>(R.id.commentcontainer) 31 val dateView = view.findViewById<TextInputEditText>(R.id.datecontainer) 32 val categoryView = view.findViewById<TextInputEditText>(R.id.categorycontainer) 33 34 val viewModel: viewModel? = activity?.let { ViewModelProviders.of(it).get(viewModel::class.java) } 35 if (viewModel?.sameActivity == 0) { 36 commentView.setText(viewModel.comment) 37 dateView.setText((viewModel.date)) 38 categoryView.setText((viewModel.category)) 39 40 } 41 42 43// カテゴリメニュー 44 45//質問該当箇所********************* 46 val categorySpinner = view?.findViewById<Spinner>(R.id.categorymenu) 47 val adapter = ArrayAdapter(requireContext(), R.layout.custom_spinner_item, menuItems) 48 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item) 49 categorySpinner?.adapter = adapter 50 51 52 val categoryContainer = view?.findViewById<TextInputEditText>(R.id.categorycontainer) 53 54 categorySpinner?.onItemSelectedListener = object :AdapterView.OnItemSelectedListener{ 55 override fun onItemSelected(parent: AdapterView<*>?, view: View, position: Int, id: Long) { 56 Log.e("select","success!!!") 57 val selectedItem = categorySpinner?.selectedItem as String 58 categoryContainer?.setText(selectedItem) 59 } 60 61 override fun onNothingSelected(parent: AdapterView<*>?) { } 62 } 63 CategoryCreate() 64 65//*********************************** 66 67// ダイアログ 68 val fab = view.findViewById<FloatingActionButton>(R.id.floatingAddButton) 69 fab.setOnClickListener(NewCategoryListener()) 70 71 return view 72 } 73 74 75 76 private inner class NewCategoryListener : View.OnClickListener { 77 val editText = EditText(context) 78 79 override fun onClick(v: View?) { 80// Edittextを二回目にセットするときのためにremoveしている.(二回addボタンを押したとき) 81 if (editText.parent != null) { 82 val parent = editText.parent as ViewGroup 83 parent.removeView(editText) 84 } 85 86 MaterialAlertDialogBuilder(requireContext()) 87 .setTitle(resources.getString(R.string.dialog_message)) 88 .setView(editText) 89 .setNegativeButton(resources.getString(R.string.Cancel)) { dialog, which -> } 90 .setPositiveButton(resources.getString(R.string.OK)) { dialog, which -> 91 92 val _helperCategory = activity?.let { CategoryDataHelper(it) } 93 val db = _helperCategory?.writableDatabase 94 95 val sqlInsert = "INSERT INTO categorylist(categoryitem) VALUES (?)" 96 val stmt = db?.compileStatement(sqlInsert) 97 stmt?.bindString(1, editText.text.toString()) 98 stmt?.executeInsert() 99 100 CategoryCreate() 101 } 102 103 .show() 104 105 } 106 107 } 108 109 110 111 private fun CategoryCreate(){ 112 113 menuItems.clear() 114 val _helperCategory = activity?.let { CategoryDataHelper(it) } 115 val db = _helperCategory?.writableDatabase 116 val sql = "SELECT * FROM categorylist" 117 val cursor = db?.rawQuery(sql, null) 118 if(cursor != null){ 119 while (cursor.moveToNext()){ 120 val index = cursor.getColumnIndex("categoryitem") 121 val categoryItem = cursor.getString(index) 122 menuItems.add(categoryItem) 123 } 124 } 125 }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

menuItems の内容を変更した場合、adapter の notifyDataSetChanged メソッドを呼ぶ必要があります。

Kotlin

1 CategoryCreate() 2 adapter.notifyDataSetChanged()

投稿2021/03/25 02:08

hoshi-takanori

総合スコア7899

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問