빠르게 배우는 안드로이드 -ClickEvent-3

위 강의에 이어서 진행합니다.

지난번 강의까지는 버튼을 클릭하면 editText에 있는 글자를 textview에 입력하는 기능을 구현해보았는데요 이번에는 반대로 textview를 누르면 editText에 있는 글자가 textview에 있는 내용으로변경되도록 코드를 수정하여봅시다.

저번 강의에서 언급한것처럼 자바에서는 저장할때 set 가져올때 get이 두가지를 생각하시고 진행하시면 됩니다 .

input_editText.setText(display_textView.getText()); 

이런 방법으로 순서를 바꾸면 되겠죠 하지만 이번에는 textview를 눌렀을때 효과를 내야됩니다. 따라서 textView에 onClickLinstener를 연결해주는 작업이 필요합니다.

display_textView.setOnClickListener(mClickListener); 코드를 추가합니다.
public class MainActivity extends AppCompatActivity {
Button click_btn;
TextView display_textView;
EditText input_editText;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

click_btn = (Button)findViewById(R.id.click_Btn);
display_textView = (TextView)findViewById(R.id.display_textview);
input_editText = (EditText)findViewById(R.id.input_editText);
click_btn.setOnClickListener(mClickListener);
display_textView.setOnClickListener(mClickListener);


}
View.OnClickListener mClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
display_textView.setText(input_editText.getText().toString());

}
};
}

이제 run버튼을 눌러 실행을 해봅시다.
버튼 클릭 이외에도 textView를 눌렀을때 도 같은 이벤트가 일어남을 볼수있는 데요 저희는 다른 이벤트를 발생하도록 코드를 짜야합니다. 따라서 onClick부분에 코드를 수정하여 우리가 원하는 이벤트를 발생하도록해봅시다.

View.OnClickListener mClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {


switch (v.getId()){

case R.id.display_textview :
input_editText.setText(display_textView.getText().toString());
break;

case R.id.click_Btn :
display_textView.setText(input_editText.getText().toString());
break;

}



}
};
switch 구문 안에 v.getId()라는 것이 사용된것을 볼수있는데요
이것은 우리가 연결한 onClickListner에서 어떤 id를 사용했는지를 알려주는 함수입니다. 이를 통해서 우리는 id값을 비교하여 각각의 클릭이벤트를 처리할수 있게 됩니다.

우리는 클릭이벤트를 학습했습니다. 그렇다면 길게 눌렀을때 이벤트를 발생시키려면 어떻게 해야될까요?

클릭할때는 onClickListener였는데 길게 클릭할때는 LongClickListener라는 것이 존재합니다.

View.OnLongClickListener mLongClickListener = new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
display_textView.setText(input_editText.getText().toString());
return true;//반드시 true로 바꾸어야 이벤트가 발생됨
}
};

다음과 같은 코드를 View.OnClickListener mClickLisnter위에 추가하고
onCreate구문안에 click_btn.setOnLongClickListener(mLongClickListener);추가 해보시면 길게 눌렀을때도 똑같이 동작하는것을 알수있습니다.