반응형
Android 에서 java를 사용할 경우 Listenr 등록은 다음과 같습니다. (예를 들어 ClickListener를 사용하였습니다.)
public class MainActivity extends AppCompatActivity implement OnClickListener{
private Button mBtn;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mBtn = (Button) findViewById(R.id.test_btn);
mBtn.setOnClickListener(this);
}
@Override
public void onClick(View v) {
if(v.getId() == R.id.test_btn){
//TODO
}
}
또는
public class MainActivity extends AppCompatActivity implement OnClickListener{
private Button mBtn;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mBtn = (Button) findViewById(R.id.test_btn);
mBtn.setOnClickListener(mClickListener);
}
private OnClickListener mClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
if(v.getId() == R.id.test_btn){
//TODO
}
};
}
이렇게 2가지 방법으로 Listener를 각 UI에 매칭시켜 사용할 수 있습니다.
그럼 Kotlin의 경우에는 어떻게 할까요?
Kotlin의 경우 많이들 사용하는 3가지 방버이 있습니다.
class MainActivity : Activity(), View.OnClickListener{
private var mBtn : Button? = null;
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
mBtn = findViewById(R.id.test_btn) as Button
}
override fun onClick(v: View?) {
if(v?.id == R.id.test_btn){
//TODO
}
}
}
class MainActivity : Activity(){
private var mBtn : Button? = null;
private var mBtn2 : Button? = null;
private var mBtn3 : Button? = null;
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
mBtn = findViewById(R.id.test_btn) as Button
mBtn!!.setOnClickListener(mClickLister);
mBtn2 = findViewById(R.id.test_btn_2) as Button
mBtn2!!.setOnClickListener(mClickListenr2);
mBtn3 = findViewById(R.id.test_btn_3) as Button
mBtn3!!.setOnClickListener(mClickListenr3);
}
val mClickLister : View.OnClickListener = object : View.OnClickListener{
override fun onClick(v: View?) {
//TODO
}
}
val mClickLister3 : View.OnClickListener = View.OnClickListener{
if(it.id == R.id.test_btn_3 ){
//TODO
}
}
}
class MainActivity : Activity(){
private var mBtn : Button? = null;
private var mBtn2 : Button? = null;
private var mBtn3 : Button? = null;
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
mBtn = findViewById(R.id.test_btn) as Button
mBtn!!.setOnClickListener { v:View? -> //TODO }
mBtn2 = findViewById(R.id.test_btn_2) as Button
mBtn2!!.setOnClickListener(object: View.OnClickListener {
override fun onClick(v: View?) {
//TODO
}
})
mBtn3 = findViewById(R.id.test_btn_3) as Button
mBtn3!!.setOnClickListener(View.OnClickListener {
if(it.id == R.id.test_btn_3 ){
//TODO
}
})
}
}
위와 같은 방식으로 Listenr들을 등록할 수 있다. 이때, mBtn3에 사용되는 it은 onClick에 파라미터가 v 한개기 때문에 it으로 대처가 가능하다. 만약 Listner에 정리된 interface에서 사용되는 파라미터가 2개일 경우에는 다음과 같다.
var mTouchListener: View.OnTouchListener = View.OnTouchListener { v, event -> //TODO }
같이 작성할 수 있다.
이 외에도 다양한 방식이 있다.
반응형
'2023년 이전 > Android' 카테고리의 다른 글
Android - WorkManager(1) (1) | 2019.10.16 |
---|---|
Android -LiveData (0) | 2019.10.15 |
Android - ViewModel (0) | 2019.10.15 |
custom 숫자 키 입력 - 보안 숫자 keyboard (0) | 2019.09.06 |
Android 잠금화면 위에 Activity 보여주기 (0) | 2019.08.28 |