diadia

興味があることをやってみる。自分のメモを残しておきます。

ButtonとListViewのリスナーについて

ButtonとListViewにつけるリスナーが紛らわしいので整理

Button

ButtonにつけるリスナーはsetOnClickListenerである。
そしてListenerインスタンスはView.OnClickListenerを使えば良い。

使用例


class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        
    val btClick = findViewById<Button>(R.id.btClick)
    val listener = TapOnClickListener()
    btClick.setOnClickListener(listener)
    
    }
    
    private inner class TapOnClickListener:View.OnClickListener{
        override fun onClick(view:View){
            val input  = findViewById<EditText>(R.id.etName)
            val inputStr = input.text.toString()
            val output = findViewById<TextView>(R.id.tvOutput)
            }
    }
}
    

ListView

ListViewにつけるリスナーは、onItemClickListenerである。
そしてListenerインスタンスはAdapterView.OnItemClickListenerを使えば良い。

使用例



class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        
    val lvMenu = findViewById(R.id.lvMenu)
    lvMenu.onItemClickListener = ListItemClickListener()
    }
    
    private inner class ListItemClickListener: AdapterView.OnItemClickListener{
        override fun onItemClick(parent:AdapterView<*>,
                                 view: View,
                                 position: Int,
                                 id: Long)
        {
            val item = parent.getItemAtPosition(position) as String

            Toast.makeText(applicationContext, item, Toast.LENGTH_LONG).show()

        }
    }
}