เจ
เจธเฉเจ เจคเฉเจนเจพเจจเฉเฉฐ เจฆเจฟเจเจพเจเจเจฆเฉ เจนเจพเจ เจเจฟ เจเฉเจเจฒเจฟเจจ เจตเจฟเฉฑเจ เจเฉฑเจ เจธเจงเจพเจฐเจจ เจเจฟเจช เจเฉเจฒเจเฉเจฒเฉเจธเจผเจจ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจเจฟเจตเฉเจ เจฌเจฃเจพเจเจเฅค เจตเจงเฉเจฐเฉ เจธเจเฉเจ เจนเฉเจฃ เจฒเจ, เจเฉเจเจฒเจฟเจจ 1.3.21, เจเจเจกเจฐเฉเจเจก 4, เจเจเจกเจฐเฉเจเจก เจธเจเฉเจกเฉเจ 3. เจฒเฉเจ เจฆเจฟเจฒเจเจธเจช เจนเฉเจตเฉเจเจพ, เจธเจญ เจคเฉเจ เจชเจนเจฟเจฒเจพเจ, เจเจนเจจเจพเจ เจฒเจ เจเฉ เจเจเจกเจฐเฉเจเจก เจเจชเจฒเฉเจเฉเจธเจผเจจเจพเจ เจจเฉเฉฐ เจตเจฟเจเจธเจค เจเจฐเจจ เจตเจฟเฉฑเจ เจเจชเจฃเฉ เจฏเจพเจคเจฐเจพ เจธเจผเฉเจฐเฉ เจเจฐเจฆเฉ เจนเจจ. เจเจน เจคเฉเจนเจพเจจเฉเฉฐ เจเจน เจธเจฎเจเจฃ เจฆเฉ เจเจเจพเจเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉ เจเจฟ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจฆเฉ เจ
เฉฐเจฆเจฐ เจเฉ เจ
เจคเฉ เจเจฟเจตเฉเจ เจเฉฐเจฎ เจเจฐเจฆเจพ เจนเฉเฅค
เจ
เจเจฟเจนเจพ เจเฉเจฒเจเฉเจฒเฉเจเจฐ เจเจฆเฉเจ เจฒเจพเจญเจฆเจพเจเจ เจนเฉเฉฐเจฆเจพ เจนเฉ เจเจฆเฉเจ เจคเฉเจนเจพเจจเฉเฉฐ เจเจฟเจธเฉ เจฐเฉเจธเจเฉเจฐเฉเจเจ เจเจพเจ เจเฉเจซเฉ เจตเจฟเฉฑเจ เจธเจฎเจพเจ เจฌเจฟเจคเจพเจเจฃ เจฆเจพ เจซเฉเจธเจฒเจพ เจเจฐเจจ เจตเจพเจฒเฉ เจเฉฐเจชเจจเฉ เจคเฉเจ เจธเฉเจเจพเจตเจพเจ เจฆเฉ เจฎเจพเจคเจฐเจพ เจฆเฉ เจเจฃเจจเจพ เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉเฉฐเจฆเฉ เจนเฉเฅค เจฌเฉเจธเจผเฉฑเจ, เจนเจฐ เจเฉเจ เจจเจนเฉเจ เจ
เจคเฉ เจนเจฎเฉเจธเจผเจพ เจตเฉเจเจฐเจพเจ เจฒเจ เจเจพเจน เจจเจนเฉเจ เจเฉฑเจกเจฆเจพ, เจเจน เจเฉฑเจ เจชเฉฑเจเจฎเฉ เจชเจฐเฉฐเจชเจฐเจพ เจนเฉ, เจชเจฐ เจ
เจเจฟเจนเฉ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจจเฉเฉฐ เจตเจฟเจเจธเจค เจเจฐเจจ เจฆเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจเจฟเจธเฉ เจตเฉ เจธเจฅเจฟเจคเฉ เจตเจฟเฉฑเจ เจฆเจฟเจฒเจเจธเจช เจนเฉ.
เจ เจธเฉเจ เจฏเจพเจฆ เจฆเจฟเจตเจพเจเจเจฆเฉ เจนเจพเจ: "Habr" เจฆเฉ เจธเจพเจฐเฉ เจชเจพเจ เจเจพเจ เจฒเจ - "Habr" เจชเฉเจฐเจเจพเจฐ เจเฉเจก เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเจ เจเจฟเจธเฉ เจตเฉ เจธเจเจฟเฉฑเจฒเจฌเจพเจเจธ เจเฉเจฐเจธ เจตเจฟเฉฑเจ เจฆเจพเจเจฒเจพ เจฒเฉเจฃ เจตเฉเจฒเฉ 10 เจฐเฉเจฌเจฒ เจฆเฉ เจเฉเจเฅค
เจธเจเจฟเฉฑเจฒเจฌเจพเจเจธ เจธเจฟเจซเจผเจพเจฐเจฟเจธเจผ เจเจฐเจฆเจพ เจนเฉ: เจชเฉเจฐเฉเจเจเฉเจเจฒ เจเฉเจฐเจธ
"เจฎเฉเจฌเจพเจเจฒ เจกเจฟเจตเฉเจฒเจชเจฐ เจชเฉเจฐเฉ .
เจเจน เจนเฉ เจเจฟ เจเจฆเฉเจ เจเจน เจเจช เจเฉฑเจฒเจฆเฉ เจนเฉ เจคเจพเจ เจเจน เจเจฟเจนเฉ เจเจฟเจนเจพ เจฆเจฟเจเจพเจ เจฆเจฟเฉฐเจฆเจพ เจนเฉ:
เจคเฉเจธเฉเจ เจเฉเฉฑเจฒ เจฐเจเจฎ เจฆเฉ เจฒเฉเฉเฉเจฆเฉ เจชเฉเจฐเจคเฉเจธเจผเจคเจคเจพ, เจฎเฉเจเจฟเฉฐเจ เจตเจฟเฉฑเจ เจญเจพเจ เจฒเฉเจฃ เจตเจพเจฒเจฟเจเจ เจฆเฉ เจเจฟเจฃเจคเฉ เจฆเจฐเจ เจเจฐเฉ เจ
เจคเฉ เจจเจคเฉเจเจพ เจชเฉเจฐเจพเจชเจค เจเจฐเฉ - เจธเฉเจเจพเจตเจพเจ เจฆเฉ เจฎเจพเจคเจฐเจพ เจเฉ เจเฉฑเจกเฉ เจเจพเจฃเฉ เจเจพเจนเฉเจฆเฉ เจนเฉเฅค
เจธเจผเฉเจฐเฉ เจเจฐเจจเจพ
เจเจช เจฆเจพ เจชเฉเจฐเจพ เจเฉฐเจเจฐเจซเฉเจธ เจเจธ เจคเจฐเฉเจนเจพเจ เจฆเจฟเจเจฆเจพ เจนเฉ:
เจชเจนเจฟเจฒเฉ เจเจพเจฐเจตเจพเจ -
เจชเฉเจฐเฉเจเฉเจเจ เจตเจฟเฉฑเจ เจเจชเจญเฉเจเจคเจพ เจฆเฉเจเจ เจเจพเจฐเจตเจพเจเจเจ เจเจพเจฒเจเฉเจฐเจฎเจฟเจ เจเฉเจฐเจฎ เจตเจฟเฉฑเจ เจฒเจฟเจเฉเจเจ เจเจเจเจ เจนเจจ, เจคเจพเจ เจเฉ เจธเจญ เจเฉเจ เจธเจชเฉฑเจธเจผเจ เจนเฉเจตเฉเฅค เจเจธเจจเฉเฉฐ เจฆเฉเจเจฃ เจฒเจ, View -> Tool Windows -> TODO เจเฉเจฒเฉเจนเฉเฅค
เจ เจธเฉเจ เจชเฉเจฐเฉเจเฉเจเจ เจฆเจพ เจ เจงเจฟเจเจจ เจเจฐเจฆเฉ เจนเจพเจ เจ เจคเฉ เจฐเฉฐเจ เจชเฉเจฒเฉเจ เจฆเจพ เจฎเฉเจฒเจพเจเจเจฃ เจเจฐเจจ เจฒเจ colors.xml เจเฉเจฒเฉเจนเจฆเฉ เจนเจพเจเฅค strings.xml เจตเจฟเฉฑเจ เจเฉเจเจธเจ เจกเฉเจเจพ (เจเฉเจชเจธเจผเจจ), เจ เจคเฉ styles.xml เจตเจฟเฉฑเจ เจเจ เจซเฉเจเจ เจเฉเจเจชเจฒเฉเจ เจนเจจเฅค
เจฒเจพเจเจค เจญเจพเจ เจตเจฟเจเจพเจธ
activity_main.xml เจเฉเจฒเฉเจนเฉ เจ เจคเฉ เจนเฉเจ เจพเจ เจฆเจฟเฉฑเจคเฉ เจเฉเจก เจจเฉเฉฐ LinearLayout (#1) เจตเจฟเฉฑเจ เจธเจผเจพเจฎเจฒ เจเจฐเฉ:
<TextView
android_id="@+id/expensePerPersonTextView"
android_layout_width="match_parent"
android_layout_height="wrap_content"
android_paddingTop="30dp"
style="@style/h1Bold"
android_textColor="@color/colorAccent"
android_text="0"/>
<TextView
android_layout_width="match_parent"
android_layout_height="wrap_content"
android_paddingBottom="25dp"
style="@style/h2"
android_textColor="@color/colorAccent"
android_text="@string/perPersonStaticText"/>
เจนเฉเจฃ เจคเฉเจธเฉเจ เจฎเฉเฉฑเจฒเจพเจ เจฆเฉ เจกเจพเจเจฐเฉเจเจเจฐเฉ เจจเฉเฉฐ เจธเจเจพเจเจฒ เจเจฐ เจธเจเจฆเฉ เจนเฉ เจเจพเจ เจฐเฉฐเจเจพเจ เจจเจพเจฒ เจเฉเจก เจธเจเจฆเฉ เจนเฉ
เจนเฉเจฃ เจชเฉเจฐเฉเจเฉเจเจ เจเจธ เจคเจฐเฉเจนเจพเจ เจฆเจฟเจธเจฆเจพ เจนเฉ:
เจเจฟเจตเฉเจ เจเจฟ เจคเฉเจธเฉเจ เจตเฉเจ เจธเจเจฆเฉ เจนเฉ, เจฒเจพเจเจค เจฆเฉ เจเจฃเจจเจพ เจเจชเจญเฉเจเจคเจพ เจฆเฉเจเจฐเจพ เจฆเจฐเจ เจเฉเจคเฉ เจกเฉเจเจพ 'เจคเฉ เจ
เจงเจพเจฐเจค เจนเฉ.
เจเจพเจคเจพ เจธเฉเจเจธเจผเจจ เจฆเจพ เจตเจฟเจเจพเจธ
เจเจฐเจเจพ เจธเฉเจเจธเจผเจจ (#2) เจคเฉเจ เจฌเจพเจ เจฆ เจนเฉเจ เจพเจ เจฆเจฟเฉฑเจคเฉ เจเฉเจก เจจเฉเฉฐ เจฒเฉเจจเฉเจ เจฐ เจฒเฉเจเจเจ เจตเจฟเฉฑเจ เจธเจผเจพเจฎเจฒ เจเจฐเฉ:
<LinearLayout
android_layout_width="match_parent"
android_layout_height="match_parent"
android_orientation="vertical"
android_background="@color/colorAccent">
<! โ TODO #3: Build Bill Section โ
โฆ
</LinearLayout>
TODOs เจธเฉเจเฉ เจคเฉเจ เจฌเจพเจ เจฆ เจฒเฉเจจเฉเจ เจฐ เจฒเฉเจเจเจ เจจเฉเฉฐ เจฌเฉฐเจฆ เจเจฐเฉ, เจ เจคเฉ เจซเจฟเจฐ เจเจธเจจเฉเฉฐ เจฒเฉเจจเฉเจ เจฐ เจฒเฉเจเจเจ (#3) เจฆเฉ เจ เฉฐเจฆเจฐ เจฐเฉฑเจ เจเฉ เจจเจตเจพเจ เจเฉเจก เจธเจผเจพเจฎเจฒ เจเจฐเฉ:
<TextView
android_layout_margin="15dp"
android_layout_width="match_parent"
android_layout_height="wrap_content"
android_textColor="@color/colorWhite"
style="@style/h4"
android_text="@string/billStaticText"/>
<EditText
android_id="@+id/billEditText"
android_layout_width="match_parent"
android_layout_height="wrap_content"
android_textColor="@color/colorWhite"
android_inputType="numberDecimal"
android_maxLines="1"
style="@style/h2Bold"
android_text="0"/>
เจเจฟเจเจเจเจฟ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจฆเจพ เจฎเฉเฉฑเจ เจเฉฐเจฎ เจฐเฉเจธเจเฉเจฐเฉเจเจ เจตเจฟเฉฑเจ เจนเฉเจฃ เจตเจพเจฒเฉ เจเจเฉฑเจ เจพเจ เจตเจฟเฉฑเจ เจนเจฐเฉเจ เจญเจพเจเฉเจฆเจพเจฐ เจฒเจ เจตเจฟเจ เจเจคเฉเจเจค เจฒเจพเจเจคเจพเจ เจฆเฉ เจเจฃเจจเจพ เจเจฐเจจเจพ เจนเฉ, เจฒเจพเจเจคเจชเจฐเจชเจฐเจธเจจ เจเฉเจเจธเจเจตเจฟเจ เจฎเฉเฉฑเจ เจญเฉเจฎเจฟเจเจพ เจจเจฟเจญเจพเจเจเจฆเจพ เจนเฉเฅค
EditText เจเฉฐเจชเฉเฉฑเจ เจจเฉเฉฐ เจเฉฑเจ เจฒเจพเจเจจ เจคเฉฑเจ เจธเฉเจฎเจฟเจค เจเจฐเจฆเจพ เจนเฉ, เจเจน เจชเฉเจฐเจพเจฎเฉเจเจฐ NumberDecimal inputType 'เจคเฉ เจธเฉเฉฑเจ เจเฉเจคเจพ เจเจพเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉเฅค
เจ
เจธเฉเจ เจเฉเจธเจ เจฒเจ เจชเฉเจฐเฉเจเฉเจเจ เจธเจผเฉเจฐเฉ เจเจฐเจฆเฉ เจนเจพเจ เจ
เจคเฉ เจเฉเฉฑเจฒ เจจเฉเจเจธเจพเจจ (เจเฉเฉฑเจเฉ เจนเฉเจ เจเฉฑเจช, เจชเจฒเฉเจเจพเจ, เจเจฆเจฟ) เจฆเฉ เจฎเจพเจชเจฆเฉฐเจก เจฆเจฐเจ เจเจฐเจฆเฉ เจนเจพเจเฅค
"เจฒเฉเจ เจ เจคเฉ เจธเฉเจเจพเจ " เจญเจพเจ เจฆเจพ เจตเจฟเจเจพเจธ
เจเฉฑเจ เจเจฟเจช เจฐเจเจฎ เจเฉเจฃเจเจพเจฐ เจจเฉเฉฐ เจเฉเฉเจจ เจฒเจ, เจนเฉเจ เจพเจ เจฆเจฟเฉฑเจคเฉ เจเฉเจก เจจเฉเฉฐ เจเฉฑเจ เจจเจตเฉเจ LinearLayout เจญเจพเจ (#4) เจตเจฟเฉฑเจ เจชเฉเจธเจ เจเจฐเฉ:
<TextView
android_layout_margin="15dp"
android_layout_width="match_parent"
android_layout_height="wrap_content"
android_textColor="@color/colorWhite"
style="@style/h4"
android_text="@string/tipStaticText"/>
<LinearLayout
android_layout_width="match_parent"
android_layout_height="wrap_content"
android_orientation="horizontal">
<ImageButton
android_id="@+id/subtractTipButton"
style="@style/operationButton"
android_layout_marginLeft="20dp"
android_layout_marginStart="20dp"
android_src="@drawable/subtract"/>
<TextView
android_id="@+id/tipTextView"
android_layout_margin="15dp"
android_layout_width="0dp"
android_layout_height="wrap_content"
android_textColor="@color/colorWhite"
android_layout_weight="1"
style="@style/h2Bold"
android_text="20%"/>
<ImageButton
android_id="@+id/addTipButton"
style="@style/operationButton"
android_layout_marginEnd="20dp"
android_layout_marginRight="20dp"
android_src="@drawable/add"/>
</LinearLayout>
เจเฉเจก เจฆเจพ เจเจน เจเฉเจเฉเจพ เจเจฟเจช เจฆเฉ เจฐเจเจฎ เจฆเฉ เจธเจนเฉ เจเจฃเจจเจพ เจเจฐเจจ เจฒเจ เจฒเฉเฉเฉเจเจฆเจพ เจนเฉเฅค เจกเจฟเจซเฉเจฒเจ เจเฉเจเจธเจ เจฎเฉเฉฑเจฒ 20 เจนเฉเฅค เจเจฟเฉฑเจคเจฐ เจฌเจเจจเจพเจ เจจเฉเฉฐ เจฒเจฟเจเจฃ เจฆเฉ เจเจเจพเจเจผเจค เจตเจพเจฒเฉ เจซเฉเจฒเจกเจฐ เจตเจฟเฉฑเจ เจเจเจเจพเจจเจพเจ เจจเจพเจฒ เจชเฉเจฐเจฆเจพเจจ เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉเฅค
เจชเฉเจฐเฉ เจญเจพเจ เจฆเฉ เจจเจเจฒ เจเจฐเฉ เจ เจคเฉ เจนเฉเจ เจพเจ เจฆเจฟเฉฑเจคเฉ (#5) เจจเฉเฉฐ เจธเจผเจพเจฎเจฒ เจเจฐเฉ:
- เจเจฟเฉฑเจคเจฐ เจฌเจเจจ เจเจเจกเฉ (เจเจเจพเจ เจฒเฉเจ เจฌเจเจจ, เจฒเฉเจ เจฌเจเจจ เจธเจผเจพเจฎเจฒ เจเจฐเฉ)
- TextView ids(numberOfPeopleStaticText, numberOfPeopleTextView)
- numberOfPeopleTextView เจฒเจ เจกเจฟเจซเฉเจฒเจ เจเฉเจเจธเจ (4 เจนเฉเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ)เฅค
เจนเฉเจฃ, เจเจชเจฒเฉเจเฉเจธเจผเจจ เจธเจผเฉเจฐเฉ เจเจฐเจฆเฉ เจธเจฎเฉเจ, เจเจจเจตเฉเจเจธ เจฆเฉ เจฐเจเจฎ เจเฉเฉเจจเจพ เจธเฉฐเจญเจต เจนเฉ, เจเฉเฉเฉ / เจเจเจพเจ เจฌเจเจจ เจตเฉ เจเฉฐเจฎ เจเจฐเจฆเฉ เจนเจจ, เจชเจฐ เจ
เจเฉ เจคเฉฑเจ เจ
เจเจฟเจนเจพ เจเฉเจ เจจเจนเฉเจ เจนเฉเจเจเฅค
เจฆเฉเจฐเจฟเจธเจผ เจธเจผเจพเจฎเจฒ เจเจฐเฉ
MainActivity.kt เจเฉเจฒเฉเจนเฉ เจ เจคเฉ เจเจธเจจเฉเฉฐ initViews เจซเฉฐเจเจธเจผเจจ (#6) เจตเจฟเฉฑเจ เจธเจผเจพเจฎเจฒ เจเจฐเฉ:
private fun initViews() {
expensePerPersonTextView = findViewById(R.id.expensePerPersonTextView)
billEditText = findViewById(R.id.billEditText)
addTipButton = findViewById(R.id.addTipButton)
tipTextView = findViewById(R.id.tipTextView)
subtractTipButton = findViewById(R.id.subtractTipButton)
addPeopleButton = findViewById(R.id.addPeopleButton)
numberOfPeopleTextView = findViewById(R.id.numberOfPeopleTextView)
subtractPeopleButton = findViewById(R.id.subtractPeopleButton)
//TODO #8: Bind Buttons to Listener
//TODO #16: Bind EditText to TextWatcher
}
เจฌเจเจจเจพเจ เจจเฉเฉฐ เจชเฉเจฐเจพ เจเจฐเจจเจพ
เจฌเจเจจ เจเจฒเจฟเฉฑเจเจพเจ เจฒเจ เจธเจฎเจฐเจฅเจจ เจเฉเฉเจจ เจฒเจ, เจเจฒเจพเจธ เจชเฉฑเจงเจฐ (#7) 'เจคเฉ View.OnClickListener เจจเฉเฉฐ เจฒเจพเจเฉ เจเจฐเฉ:
เจเจฒเจพเจธ เจฎเฉเฉฑเจ เจธเจฐเจเจฐเจฎเฉ: AppCompatActivity(), View.OnClickListener {
เจเจธ เจธเจฎเฉเจ เจชเฉเจฐเฉเจเฉเจเจ เจจเฉเฉฐ เจเฉฐเจชเจพเจเจฒ เจเจฐเจจเจพ เจเฉฐเจฎ เจจเจนเฉเจ เจเจฐเฉเจเจพ, เจคเฉเจนเจพเจจเฉเฉฐ เจเฉเจ เจนเฉเจฐ เจเจฆเจฎ (# 8) เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉ:
override fun onClick(v: View?) {
when (v?.id) {
R.id.addTipButton -> incrementTip()
R.id.subtractTipButton -> decrementTip()
R.id.addPeopleButton -> incrementPeople()
R.id.subtractPeopleButton -> decrementPeople()
}
}
เจฌเจเจจเจพเจ เจ
เจคเฉ เจธเจตเจฟเฉฑเจเจพเจ เจฆเฉ เจฎเจพเจฎเจฒเฉ เจตเจฟเฉฑเจ, เจเฉเจเจฒเจฟเจจ เจตเจฟเฉฑเจ เจธเจญ เจเฉเจ เจฌเจนเฉเจค เจตเจงเฉเจ เจนเฉ! เจนเฉเจ เจพเจ เจฆเจฟเฉฑเจคเฉ เจเฉเจก เจจเฉเฉฐ เจธเจพเจฐเฉ เจตเจพเจงเฉ เจ
เจคเฉ เจเจเจพเจ เจซเฉฐเจเจธเจผเจจเจพเจ เจตเจฟเฉฑเจ เจธเจผเจพเจฎเจฒ เจเจฐเฉ
(#9 โ#12):
private fun incrementTip() {
if (tipPercent != MAX_TIP) {
tipPercent += TIP_INCREMENT_PERCENT
tipTextView.text = String.format("%d%%", tipPercent)
}
}
private fun decrementTip() {
if (tipPercent != MIN_TIP) {
tipPercent -= TIP_INCREMENT_PERCENT
tipTextView.text = String.format("%d%%", tipPercent)
}
}
private fun incrementPeople() {
if (numberOfPeople != MAX_PEOPLE) {
numberOfPeople += PEOPLE_INCREMENT_VALUE
numberOfPeopleTextView.text = numberOfPeople.toString()
}
}
private fun decrementPeople() {
if (numberOfPeople != MIN_PEOPLE) {
numberOfPeople -= PEOPLE_INCREMENT_VALUE
numberOfPeopleTextView.text = numberOfPeople.toString()
}
}
เจเฉฑเจฅเฉ เจเฉเจก เจตเฉฑเจง เจคเฉเจ เจตเฉฑเจง เจฎเฉเฉฑเจฒเจพเจ (MAX_TIP & MAX_PEOPLE) เจจเจพเจฒ เจตเจพเจงเฉ เจซเฉฐเจเจธเจผเจจเจพเจ เจฆเฉ เจฐเฉฑเจเจฟเจ เจเจฐเจฆเจพ เจนเฉเฅค เจเจธ เจคเฉเจ เจเจฒเจพเจตเจพ, เจเฉเจก เจเฉฑเจเฉ-เจเฉฑเจ เจฎเฉเฉฑเจฒเจพเจ (MIN_TIP เจ เจคเฉ MIN_PEOPLE) เจจเจพเจฒ เจเจเจฃ เจตเจพเจฒเฉ เจซเฉฐเจเจธเจผเจจเจพเจ เจฆเฉ เจฐเฉฑเจเจฟเจ เจเจฐเจฆเจพ เจนเฉเฅค
เจนเฉเจฃ เจ เจธเฉเจ initViews เจซเฉฐเจเจธเจผเจจ (#13) เจตเจฟเฉฑเจ เจธเจฐเฉเจคเจฟเจเจ เจฒเจ เจฌเจเจจเจพเจ เจจเฉเฉฐ เจฌเฉฐเจจเฉเจนเจฆเฉ เจนเจพเจ:
private fun initViews() {
...
addTipButton.setOnClickListener(this)
subtractTipButton.setOnClickListener(this)
addPeopleButton.setOnClickListener(this)
subtractPeopleButton.setOnClickListener(this)
//TODO #15: Bind EditText to TextWatcher
}
เจคเฉเจธเฉเจ เจนเฉเจฃ เจเฉเฉฑเจฒ เจจเฉเจเจธเจพเจจ, เจธเฉเจเจพเจ
เจ
เจคเฉ เจฎเฉเจเจฟเฉฐเจ เจตเจฟเฉฑเจ เจญเจพเจ เจฒเฉเจฃ เจตเจพเจฒเจฟเจเจ เจฆเฉ เจเจฟเจฃเจคเฉ เจธเจผเจพเจฎเจฒ เจเจฐ เจธเจเจฆเฉ เจนเฉเฅค เจเฉเจฐ, เจนเฉเจฃ เจธเจญ เจคเฉเจ เจฎเจนเฉฑเจคเจตเจชเฉเจฐเจฃ เจเฉฑเจฒ ...
เจฒเจพเจเจค เจธเฉเจเจธเจผเจจ
เจเจน เจเฉเจก เจฒเจพเจเจคเจพเจ เจฆเฉ เจเจฃเจจเจพ เจเจฐเจฆเจพ เจนเฉ (#14):
private fun calculateExpense() {
val totalBill = billEditText.text.toString().toDouble()
val totalExpense = ((HUNDRED_PERCENT + tipPercent) / HUNDRED_PERCENT) * totalBill
val individualExpense = totalExpense / numberOfPeople
expensePerPersonTextView.text = String.format("$%.2f", individualExpense)
}
เจเฉเจฐ, เจเฉฑเจฅเฉ เจเฉฑเจ เจซเฉฐเจเจธเจผเจจ เจเจฟเจนเจพ เจเจพเจเจฆเจพ เจนเฉ เจเฉ เจเฉฐเจชเจจเฉ เจตเจฟเฉฑเจ เจฒเฉเจเจพเจ เจฆเฉ เจเจฟเจฃเจคเฉ เจจเฉเฉฐ เจงเจฟเจเจจ เจตเจฟเฉฑเจ เจฐเฉฑเจเจฃเจพ เจ เจคเฉ เจเจฟเจช (#15) เจฆเฉ เจเจฃเจจเจพ เจเจฐเจจเจพ เจธเฉฐเจญเจต เจฌเจฃเจพเจเจเจฆเจพ เจนเฉ:
private fun incrementTip() {
โฆ
}
private fun decrementTip() {
โฆ
}
private fun incrementPeople() {
โฆ
}
private fun decrementPeople() {
โฆ
}
เจ เจธเฉเจ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจฒเจพเจเจ เจเจฐเจฆเฉ เจนเจพเจเฅค เจเจน เจฌเจนเฉเจค เจตเจงเฉเจ เจฆเจฟเจเจฆเจพ เจนเฉ เจ เจคเฉ เจเฉฐเจฎ เจเจฐเจฆเจพ เจนเฉเฅค เจชเจฐ เจเจน เจฌเจฟเจนเจคเจฐ เจนเฉ เจธเจเจฆเจพ เจนเฉ.
เจเฉเจเจฐ เจคเฉเจธเฉเจ เจเจจเจตเฉเจเจธ เจฆเฉ เจฐเจเจฎ เจจเฉเฉฐ เจนเจเจพเจเจฃ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเจฐเจฆเฉ เจนเฉ เจ เจคเฉ เจซเจฟเจฐ เจธเฉฐเจเฉเจคเจพเจ เจเจพเจ เจฆเฉเจธเจคเจพเจ เจฆเฉ เจเจฟเจฃเจคเฉ เจจเฉเฉฐ เจตเจงเจพเจเจเจฆเฉ เจนเฉ, เจคเจพเจ เจเจช เจเฉเจฐเฉเจธเจผ เจนเฉ เจเจพเจตเฉเจเจพ เจเจฟเจเจเจเจฟ เจ เจเฉ เจคเฉฑเจ เจเจผเฉเจฐเฉ เจฒเจพเจเจคเจพเจ เจฒเจ เจเฉเจ เจเจพเจเจ เจจเจนเฉเจ เจนเฉเฅค เจเจธ เจคเฉเจ เจเจฒเจพเจตเจพ, เจเฉเจเจฐ เจคเฉเจธเฉเจ เจเจจเจตเฉเจเจธ เจฐเจเจฎ เจจเฉเฉฐ เจฌเจฆเจฒเจฃ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเจฐเจฆเฉ เจนเฉ, เจคเจพเจ เจเจฐเจเฉ เจ เฉฑเจชเจกเฉเจ เจจเจนเฉเจ เจเฉเจคเฉ เจเจพเจฃเจเฉเฅค
เจ เฉฐเจคเจฎ เจเจฆเจฎ
เจเฉเจเจธเจเจตเจพเจเจฐ เจธเจผเจพเจฎเจฒ เจเจฐเฉ (#16):
เจเจฒเจพเจธ เจฎเฉเจจเจเจเจเฉเจตเจฟเจเฉ: เจเจชเจเฉฐเจชเฉเจเจเจเจเฉเจตเจฟเจเฉ(), View.OnClickListener, TextWatcher {
เจซเจฟเจฐ เจ เจธเฉเจ เจฌเจฟเจฒ เจเจกเจฟเจ เจเฉเจเจธเจ เจฒเจฟเจธเจจเจฐ (#17) เจจเฉเฉฐ เจเจฎเจฌเฉเจก เจเจฐเจฆเฉ เจนเจพเจ:
billEditText.addTextChangedListener(เจเจน)
เจจเจพเจฒ เจนเฉ เจเฉเจเจธเจเจตเจพเจเจฐ (#18) เจจเฉเฉฐ เจเจฒเจพเจเจฃ เจฒเจ เจเฉเจก เจธเจผเจพเจฎเจฒ เจเจฐเฉ:
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
if (!billEditText.text.isEmpty()) {
calculateExpense()
}
}
override fun afterTextChanged(s: Editable?) {}
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}
เจเฉเจฐ, เจนเฉเจฃ เจธเจญ เจเฉเจ เจเฉฐเจฎ เจเจฐเจฆเจพ เจนเฉ! เจตเจงเจพเจเจเจ, เจคเฉเจธเฉเจ เจเฉเจเจฒเจฟเจจ เจตเจฟเฉฑเจ เจเจชเจฃเจพ "เจเจฟเจชเจฟเฉฐเจ เจเฉเจฒเจเฉเจฒเฉเจเจฐ" เจฒเจฟเจเจฟเจ เจนเฉเฅค
เจธเจเจฟเฉฑเจฒเจฌเจพเจเจธ เจธเจฟเจซเจผเจพเจฐเจฟเจธเจผ เจเจฐเจฆเจพ เจนเฉ:
- เจฆเฉ เจธเจพเจฒเจพ เจชเฉเจฐเฉเจเจเฉเจเจฒ เจเฉเจฐเจธ
"เจฎเฉเจ เจเฉฑเจ เจชเฉเจฐเฉ เจตเฉเฉฑเจฌ เจกเจฟเจตเฉเจฒเจชเจฐ เจนเจพเจ" .- Onlineเจจเจฒเจพเจเจจ เจเฉเจฐเจธ
"C# เจกเจฟเจตเฉเจฒเจชเจฐ" .- เจชเฉเจฐเฉเจเจเฉเจเจฒ เจธเจพเจฒ เจฆเจพ เจเฉเจฐเจธ
"0 เจคเฉเจ PRO เจคเฉฑเจ PHP เจกเจฟเจตเฉเจฒเจชเจฐ" .
เจธเจฐเฉเจค: www.habr.com