26756


OnItemSelectedListenerが反応しません。

  * AdapterのisEnabledはtrueを返す
  * 項目にはImageView一つとTextView一つ 
  * ListViewのchoiceModeはsingleChoice

考えられる原因はありますでしょうか？

[code]

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    
        val listview = findViewById(R.id.listview) as ListView
        val adapter = ArrayAdapter<String>(this, android.R.layout.simple_list_item_1)
        listview.adapter = adapter
        adapter.addAll("為吾郎", "熊乃介", "ヘンダーソンさん")
        listview.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
            override  fun onItemSelected(parent: AdapterView<*>, view: View, position: Int, id: Long) {
                print("selected")
            }
    
            override  fun onNothingSelected(parent: AdapterView<*>) {
    
            }
    
        }
    }
    
[/code]


CC BY-SA 3.0
2016-06-03T10:25:34.453
25420
2016-06-15T14:07:18.803
2016-06-14T09:30:29.197
12288
12288
question
android
Android ListView OnItemSelectedListenerが反応しない


`ListView`において、`OnItemSelectedListener`はハードキーボードやトラックボールのある端末で、アイテムがフォーカスされたときに呼び出されます。

タップで選択されたアイテムを取得するリスナは、`OnItemClickListener`になります。

[code]

    class MainActivity : AppCompatActivity() {
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
    
            val listView = findViewById(R.id.listView) as ListView
            listView.adapter = ArrayAdapter<String>(this, android.R.layout. simple_list_item_1, listOf("A", "B", "C", "D"))
            listView.onItemClickListener = AdapterView.OnItemClickListener { adapterView, view, i, l ->
                Log.d("debug", "click position in ${adapterView.adapter.getItem(i)}")
            }
        }
    }
    
[/code]

`ListView.CHOICE_MODE_SINGLE`を指定されているとのことで、例えばチェックボックスなどで単一選択を行う`ListView`を実装したいと考えているのかもしれません。

このとき、リストの各行のビューは`Checkable`インターフェースに準拠している必要がありますので、`simple_list_item_single_choice`を使うのが良いと思います。

[code]

    class MainActivity : AppCompatActivity() {
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
    
            val listView = findViewById(R.id.listView) as ListView
            listView.choiceMode = ListView.CHOICE_MODE_SINGLE
            listView.adapter = ArrayAdapter<String>(this, android.R.layout.simple_list_item_single_choice, listOf("A", "B", "C", "D"))
        }
    }
    
[/code]


CC BY-SA 3.0
2016-06-15T02:13:57.327
26756
2016-06-15T14:07:18.803
2016-06-15T14:07:18.803
5337
5337
25420
answer