Data Binding 을 이용해서 이벤트를 정의해 보자!!
레이아웃 xml 파일
<data>
<variable
name="user"
type="kr.co.exam.myjetpack.bind.User" />
<variable
name="presenter"
type="kr.co.exam.myjetpack.event.Presenter" />
</data>
버튼을 정의하자
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="event"
android:onClick="@{(view) -> presenter.onSaveClick(view)}"
/>
람다표현식을 사용해서 위에 variable 에 선언한 presenter 의 onSaveClick 에 접근할 수 있다.
Presenter 클래스
public class Presenter {
private Context mContext;
public Presenter(Activity activity) {
this.mContext = activity.getApplicationContext();
}
public void onSaveClick(View view) {
Log.w("DEBUG", "onSaveClicked");
if(mContext != null) {
Toast.makeText(mContext, "onSaveClick~~", Toast.LENGTH_SHORT).show();
}
}
}
MainActivity 에서 아래와 같이 설정을 해주어야 한다.
Presenter 를 생성해서, binding을 해주어야 이벤트가 제대로 동작한다. (이걸 안해줘서 엄청 삽질..
-_-;;)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main_activity)
val presenter = Presenter(this)
val binding = DataBindingUtil
.setContentView<DataBindLayoutBinding>(this, R.layout.data_bind_layout)
val user = User("Test", "User")
binding.user = user
binding.presenter = presenter
}
구동화면
'안드로이드 > JetPack' 카테고리의 다른 글
Data Binding (0) | 2018.05.24 |
---|