Skip to content

Commit

Permalink
[Feat] 데이터바인딩 Step.01 실습
Browse files Browse the repository at this point in the history
Step.01 dataBinding local_value

Related to : #2
  • Loading branch information
hyooosong committed Dec 31, 2020
1 parent 6c7b732 commit 4d33f0d
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 58 deletions.
1 change: 1 addition & 0 deletions .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 4 additions & 3 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
plugins {
id 'com.android.application'
id 'kotlin-android'
/*TODO step1 kotlin kapt 추가하기
* 코틀린 어노테이션을 사용하기 위함*/
id 'kotlin-kapt'
}

android {
Expand Down Expand Up @@ -32,7 +31,9 @@ android {
kotlinOptions {
jvmTarget = '1.8'
}
/*TODO step2 DataBinding 활성화 하기*/
dataBinding {
enabled = true
}
}

dependencies {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,21 @@ import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.ImageView
import android.widget.TextView
import androidx.databinding.BindingAdapter
import androidx.databinding.DataBindingUtil
import com.bumptech.glide.Glide
/*TODO step4 데이터 바인딩 직접 적용해보기.*/
import sotp.semina.practicegitanddatabinding.databinding.ActivityMainBinding

class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
var profilename = "profileName"

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
binding = DataBindingUtil.setContentView(this, R.layout.activity_main)
binding.mainActivity = this
initView()
}

Expand All @@ -20,18 +28,20 @@ class MainActivity : AppCompatActivity() {
addButtonClickEvent()
}


private fun initProfileImage() {
Glide.with(this)
.load(IMAGE_URL)
.into(findViewById(R.id.image_profile_image))
.into(binding.imageProfileImage)
}

private fun setProfileName(content:String) {
findViewById<TextView>(R.id.text_profile_name).text = content
profilename = content
binding.invalidateAll()
}

private fun addButtonClickEvent() {
findViewById<Button>(R.id.button_profile_change_button).setOnClickListener {
binding.buttonProfileChangeButton.setOnClickListener {
setProfileName(getEditTextToString(findViewById(R.id.input_changed_profile)))
}
}
Expand Down
106 changes: 56 additions & 50 deletions app/src/main/res/layout/activity_main.xml
Original file line number Diff line number Diff line change
@@ -1,57 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<!--TODO step3 데이터 바인딩을 위한 레이아웃으로 감싸기-->
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
xmlns:tools="http://schemas.android.com/tools">

<ImageView
android:id="@+id/image_profile_image"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_marginTop="100dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:src = "@mipmap/ic_launcher"
/>
<data>
<variable
name="mainActivity"
type="sotp.semina.practicegitanddatabinding.MainActivity" />
</data>

<TextView
android:id="@+id/text_profile_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:textColor="@color/black"
android:textSize="20sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/image_profile_image"
tools:text="profile name" />

<EditText
android:id="@+id/input_changed_profile"
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/text_profile_name" />
android:layout_height="match_parent"
tools:context=".MainActivity">

<Button
android:id="@+id/button_profile_change_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
android:text="Change"
app:layout_constraintTop_toBottomOf="@+id/input_changed_profile" />
<ImageView
android:id="@+id/image_profile_image"
android:layout_width="200dp"
android:layout_height="200dp"
android:layout_marginTop="100dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:src="@mipmap/ic_launcher" />

<TextView
android:id="@+id/text_profile_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:textColor="@color/black"
android:textSize="20sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/image_profile_image"
tools:text="@{mainActivity.profilename}" />

<EditText
android:id="@+id/input_changed_profile"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/text_profile_name" />

<Button
android:id="@+id/button_profile_change_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="16dp"
android:text="Change"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/input_changed_profile" />

</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>

0 comments on commit 4d33f0d

Please sign in to comment.