āĻ•ā§‹āĻŸāĻ˛āĻŋāĻ¨ā§‡ āĻāĻ•āĻŸāĻŋ āĻŸāĻŋāĻĒ āĻ•ā§āĻ¯āĻžāĻ˛āĻ•ā§āĻ˛ā§‡āĻŸāĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž: āĻāĻŸāĻŋ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡?

āĻ•ā§‹āĻŸāĻ˛āĻŋāĻ¨ā§‡ āĻāĻ•āĻŸāĻŋ āĻŸāĻŋāĻĒ āĻ•ā§āĻ¯āĻžāĻ˛āĻ•ā§āĻ˛ā§‡āĻŸāĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž: āĻāĻŸāĻŋ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡?

āĻ†āĻŽāĻ°āĻž āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻŦāĻ˛āĻŋ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻ•ā§‹āĻŸāĻ˛āĻŋāĻ¨ā§‡ āĻŸāĻŋāĻĒāĻ¸ āĻ—āĻŖāĻ¨āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻ¸āĻšāĻœ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¯āĻŧāĨ¤ āĻ†āĻ°āĻ“ āĻ¸ā§āĻĒāĻˇā§āĻŸ āĻ•āĻ°ā§‡ āĻŦāĻ˛āĻ˛ā§‡, āĻ•ā§‹āĻŸāĻ˛āĻŋāĻ¨ 1.3.21, āĻ…ā§āĻ¯āĻžāĻ¨ā§āĻĄā§āĻ°āĻ¯āĻŧā§‡āĻĄ 4, āĻ…ā§āĻ¯āĻžāĻ¨ā§āĻĄā§āĻ°āĻ¯āĻŧā§‡āĻĄ āĻ¸ā§āĻŸā§āĻĄāĻŋāĻ“ 3āĨ¤ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§āĻŸāĻŋ āĻ†āĻ•āĻ°ā§āĻˇāĻŖā§€āĻ¯āĻŧ āĻšāĻŦā§‡, āĻĒā§āĻ°āĻĨāĻŽāĻ¤, āĻ¯āĻžāĻ°āĻž āĻ…ā§āĻ¯āĻžāĻ¨ā§āĻĄā§āĻ°āĻ¯āĻŧā§‡āĻĄ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻŦāĻŋāĻ•āĻžāĻļā§‡ āĻ¤āĻžāĻĻā§‡āĻ° āĻ¯āĻžāĻ¤ā§āĻ°āĻž āĻļā§āĻ°ā§ āĻ•āĻ°āĻ›ā§‡āĻ¨ āĻ¤āĻžāĻĻā§‡āĻ° āĻœāĻ¨ā§āĻ¯āĨ¤ āĻāĻŸāĻŋ āĻ†āĻĒāĻ¨āĻžāĻ•ā§‡ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨āĻŸāĻŋāĻ° āĻ­āĻŋāĻ¤āĻ°ā§‡ āĻ•ā§€ āĻāĻŦāĻ‚ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡ āĻ¤āĻž āĻŦā§āĻāĻ¤ā§‡ āĻĻā§‡āĻ¯āĻŧāĨ¤

āĻ°ā§‡āĻ¸ā§āĻ¤ā§‹āĻ°āĻžāĻ āĻŦāĻž āĻ•ā§āĻ¯āĻžāĻĢā§‡āĻ¤ā§‡ āĻ¸āĻŽāĻ¯āĻŧ āĻ•āĻžāĻŸāĻžāĻ¨ā§‹āĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨ā§‡āĻ¯āĻŧ āĻāĻŽāĻ¨ āĻāĻ•āĻŸāĻŋ āĻ•ā§‹āĻŽā§āĻĒāĻžāĻ¨āĻŋāĻ° āĻ•āĻžāĻ› āĻĨā§‡āĻ•ā§‡ āĻŸāĻŋāĻĒāĻ¸ā§‡āĻ° āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻ—āĻŖāĻ¨āĻž āĻ•āĻ°āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻšāĻ˛ā§‡ āĻāĻ‡ āĻ•ā§āĻ¯āĻžāĻ˛āĻ•ā§āĻ˛ā§‡āĻŸāĻ°āĻŸāĻŋ āĻ•āĻžāĻœā§‡ āĻ†āĻ¸āĻŦā§‡āĨ¤ āĻ…āĻŦāĻļā§āĻ¯āĻ‡, āĻ¸āĻŦāĻžāĻ‡ āĻ¸āĻŦāĻ¸āĻŽāĻ¯āĻŧ āĻ“āĻ¯āĻŧā§‡āĻŸāĻžāĻ°āĻĻā§‡āĻ° āĻ•āĻžāĻ›ā§‡ āĻāĻ•āĻŸāĻŋ āĻŸāĻŋāĻĒ āĻĻā§‡āĻ¯āĻŧ āĻ¨āĻž; āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻĒāĻļā§āĻšāĻŋāĻŽāĻž āĻāĻ¤āĻŋāĻšā§āĻ¯, āĻ¤āĻŦā§‡ āĻāĻ‡ āĻœāĻžāĻ¤ā§€āĻ¯āĻŧ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻŦāĻŋāĻ•āĻžāĻļā§‡āĻ° āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¯ā§‡ āĻ•ā§‹āĻ¨āĻ“ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡āĻ‡ āĻ†āĻ•āĻ°ā§āĻˇāĻŖā§€āĻ¯āĻŧāĨ¤

āĻ†āĻŽāĻ°āĻž āĻŽāĻ¨ā§‡ āĻ•āĻ°āĻŋāĻ¯āĻŧā§‡ āĻĻāĻŋāĻšā§āĻ›āĻŋ: "Habr"-āĻāĻ° āĻ¸āĻ•āĻ˛ āĻĒāĻžāĻ āĻ•āĻĻā§‡āĻ° āĻœāĻ¨ā§āĻ¯ - "Habr" āĻĒā§āĻ°āĻšāĻžāĻ°āĻŽā§‚āĻ˛āĻ• āĻ•ā§‹āĻĄ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ¯ā§‡āĻ•ā§‹āĻ¨ā§‹ Skillbox āĻ•ā§‹āĻ°ā§āĻ¸ā§‡ āĻ¨āĻĨāĻŋāĻ­ā§āĻ•ā§āĻ¤ āĻ•āĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ 10 āĻ°ā§āĻŦā§‡āĻ˛ āĻ›āĻžāĻĄāĻŧāĨ¤

Skillbox āĻ¸ā§āĻĒāĻžāĻ°āĻŋāĻļ āĻ•āĻ°ā§‡: āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻŋāĻ• āĻ•ā§‹āĻ°ā§āĻ¸ "āĻŽā§‹āĻŦāĻžāĻ‡āĻ˛ āĻĄā§‡āĻ­ā§‡āĻ˛āĻĒāĻžāĻ° PRO.

āĻāĻ‡ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ āĻŽāĻ¤ āĻĻā§‡āĻ–āĻžāĻ¯āĻŧ āĻ•āĻŋ:

āĻ•ā§‹āĻŸāĻ˛āĻŋāĻ¨ā§‡ āĻāĻ•āĻŸāĻŋ āĻŸāĻŋāĻĒ āĻ•ā§āĻ¯āĻžāĻ˛āĻ•ā§āĻ˛ā§‡āĻŸāĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž: āĻāĻŸāĻŋ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡?

āĻ†āĻĒāĻ¨āĻŋ āĻŽā§‹āĻŸ āĻĒāĻ°āĻŋāĻŽāĻžāĻŖā§‡āĻ° āĻĒāĻ›āĻ¨ā§āĻĻāĻ¸āĻ‡ āĻļāĻ¤āĻžāĻ‚āĻļ, āĻŽāĻŋāĻŸāĻŋāĻ‚ āĻ…āĻ‚āĻļāĻ—ā§āĻ°āĻšāĻŖāĻ•āĻžāĻ°ā§€āĻĻā§‡āĻ° āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž āĻ˛āĻŋāĻ–ā§āĻ¨ āĻāĻŦāĻ‚ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĒāĻžāĻ¨ - āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¯ā§‡ āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻŸāĻŋāĻĒ āĻ›ā§‡āĻĄāĻŧā§‡ āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻ‰āĻšāĻŋāĻ¤āĨ¤

āĻļā§āĻ°ā§ āĻ•āĻ°āĻž

āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻĢā§‡āĻ¸ āĻāĻ‡ āĻŽāĻ¤ āĻĻā§‡āĻ–āĻžāĻ¯āĻŧ:
āĻ•ā§‹āĻŸāĻ˛āĻŋāĻ¨ā§‡ āĻāĻ•āĻŸāĻŋ āĻŸāĻŋāĻĒ āĻ•ā§āĻ¯āĻžāĻ˛āĻ•ā§āĻ˛ā§‡āĻŸāĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž: āĻāĻŸāĻŋ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡?

āĻ•ā§‹āĻŸāĻ˛āĻŋāĻ¨ā§‡ āĻāĻ•āĻŸāĻŋ āĻŸāĻŋāĻĒ āĻ•ā§āĻ¯āĻžāĻ˛āĻ•ā§āĻ˛ā§‡āĻŸāĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž: āĻāĻŸāĻŋ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡?

āĻĒā§āĻ°āĻĨāĻŽ āĻ•āĻ°ā§āĻŽ- āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡āĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻĄāĻžāĻ‰āĻ¨āĻ˛ā§‹āĻĄ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡. āĻāĻŸāĻŋ āĻ…ā§āĻ¯āĻžāĻ¨ā§āĻĄā§āĻ°āĻ¯āĻŧā§‡āĻĄ āĻ¸ā§āĻŸā§āĻĄāĻŋāĻ“ 3.0 āĻŦāĻž āĻ¤āĻžāĻ° āĻĒāĻ°ā§‡ āĻ–ā§āĻ˛ā§āĻ¨āĨ¤ āĻ†āĻŽāĻ°āĻž āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒāĻŸāĻŋ āĻ¤ā§ˆāĻ°āĻŋ āĻāĻŦāĻ‚ āĻšāĻžāĻ˛ā§ āĻ•āĻ°āĻŋ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻĻāĻž āĻĒāĻ°ā§āĻĻāĻž āĻĻā§‡āĻ–āĻŋāĨ¤ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻ āĻŋāĻ• āĻ†āĻ›ā§‡, āĻāĻŽāĻ¨āĻ‡ āĻšāĻ“āĻ¯āĻŧāĻž āĻ‰āĻšāĻŋāĻ¤āĨ¤

āĻ•ā§‹āĻŸāĻ˛āĻŋāĻ¨ā§‡ āĻāĻ•āĻŸāĻŋ āĻŸāĻŋāĻĒ āĻ•ā§āĻ¯āĻžāĻ˛āĻ•ā§āĻ˛ā§‡āĻŸāĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž: āĻāĻŸāĻŋ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡?

āĻ•ā§‹āĻŸāĻ˛āĻŋāĻ¨ā§‡ āĻāĻ•āĻŸāĻŋ āĻŸāĻŋāĻĒ āĻ•ā§āĻ¯āĻžāĻ˛āĻ•ā§āĻ˛ā§‡āĻŸāĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž: āĻāĻŸāĻŋ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡?

āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻĒāĻ°āĻŋāĻˇā§āĻ•āĻžāĻ° āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ—ā§āĻ˛āĻŋ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒā§‡ āĻ•āĻžāĻ˛āĻžāĻ¨ā§āĻ•ā§āĻ°āĻŽāĻŋāĻ• āĻ•ā§āĻ°āĻŽā§‡ āĻ˛ā§‡āĻ–āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻŸāĻŋ āĻĻā§‡āĻ–āĻ¤ā§‡, 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"/>

āĻāĻ–āĻ¨ āĻ†āĻĒāĻ¨āĻŋ āĻŽāĻžāĻ¨ āĻĄāĻŋāĻ°ā§‡āĻ•ā§āĻŸāĻ°āĻŋ āĻ¸ā§āĻŸāĻžāĻ‡āĻ˛ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻŦāĻž āĻ°āĻ‚ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻ–ā§‡āĻ˛āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ material.io āĻŸā§āĻ˛.

āĻāĻ–āĻ¨ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻāĻ‡ āĻŽāĻ¤ āĻĻā§‡āĻ–āĻžāĻ¯āĻŧ:

āĻ•ā§‹āĻŸāĻ˛āĻŋāĻ¨ā§‡ āĻāĻ•āĻŸāĻŋ āĻŸāĻŋāĻĒ āĻ•ā§āĻ¯āĻžāĻ˛āĻ•ā§āĻ˛ā§‡āĻŸāĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž: āĻāĻŸāĻŋ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡?
āĻ†āĻĒāĻ¨āĻŋ āĻĻā§‡āĻ–āĻ¤ā§‡ āĻĒāĻžāĻšā§āĻ›ā§‡āĻ¨, āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°āĻŦā§‡āĻļ āĻ•āĻ°āĻž āĻĄā§‡āĻŸāĻžāĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ āĻ–āĻ°āĻšāĻ—ā§āĻ˛āĻŋ āĻ—āĻŖāĻ¨āĻž āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤

āĻšāĻŋāĻ¸āĻžāĻŦ āĻŦāĻŋāĻ­āĻžāĻ—ā§‡āĻ° āĻ‰āĻ¨ā§āĻ¨āĻ¯āĻŧāĻ¨

āĻŦā§āĻ¯āĻ¯āĻŧ āĻŦāĻŋāĻ­āĻžāĻ—ā§‡āĻ° (#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>

āĻ†āĻŽāĻ°āĻž TODO-āĻ° āĻ¤āĻžāĻ˛āĻŋāĻ•āĻžāĻ° āĻĒāĻ°ā§‡ LinearLayout āĻŦāĻ¨ā§āĻ§ āĻ•āĻ°āĻŋ, āĻāĻŦāĻ‚ āĻ¤āĻžāĻ°āĻĒāĻ° āĻ¨āĻ¤ā§āĻ¨ āĻ•ā§‹āĻĄ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻŋ, āĻāĻŸāĻŋāĻ•ā§‡ LinearLayout (#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"/>

āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨āĻŸāĻŋāĻ° āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻ•āĻžāĻœ āĻšāĻ˛ āĻāĻ•āĻŸāĻŋ āĻ°ā§‡āĻ¸ā§āĻŸā§āĻ°ā§‡āĻ¨ā§āĻŸā§‡āĻ° āĻ¸āĻŽāĻžāĻŦā§‡āĻļā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ…āĻ‚āĻļāĻ—ā§āĻ°āĻšāĻŖāĻ•āĻžāĻ°ā§€āĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§ƒāĻĨāĻ• āĻ–āĻ°āĻš āĻ—āĻŖāĻ¨āĻž āĻ•āĻ°āĻž, āĻ¤āĻžāĻ‡ CostPerPersonTextView āĻŽā§‚āĻ˛ āĻ­ā§‚āĻŽāĻŋāĻ•āĻž āĻĒāĻžāĻ˛āĻ¨ āĻ•āĻ°ā§‡āĨ¤

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
 
}

āĻŦā§‹āĻ¤āĻžāĻŽāĻ—ā§āĻ˛āĻŋ āĻļā§‡āĻˇ āĻ•āĻ°āĻž āĻšāĻšā§āĻ›ā§‡

āĻŦā§‹āĻ¤āĻžāĻŽ āĻ•ā§āĻ˛āĻŋāĻ•ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻ¤ā§‡, āĻ†āĻŽāĻ°āĻž āĻ•ā§āĻ˛āĻžāĻ¸ āĻ¸ā§āĻ¤āĻ°ā§‡ View.OnClickListener āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻ— āĻ•āĻ°āĻŋ (#7):

āĻ•ā§āĻ˛āĻžāĻ¸ āĻŽā§‡āĻ‡āĻ¨ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻŸāĻŋāĻ­āĻŋāĻŸāĻŋ: 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()
        }
    }

āĻŦā§‹āĻ¤āĻžāĻŽ āĻāĻŦāĻ‚ āĻ¸ā§āĻ‡āĻš āĻĒāĻ°āĻŋāĻĒā§āĻ°ā§‡āĻ•ā§āĻˇāĻŋāĻ¤ā§‡, Kotlin āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻ–ā§āĻŦ āĻ¸ā§āĻ¨ā§āĻĻāĻ° āĻ¸āĻ‚āĻ—āĻ āĻŋāĻ¤! āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻŦā§ƒāĻĻā§āĻ§āĻŋ āĻāĻŦāĻ‚ āĻšā§āĻ°āĻžāĻ¸ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻ¨ā§€āĻšā§‡āĻ° āĻ•ā§‹āĻĄ āĻ¯ā§‹āĻ— āĻ•āĻ°ā§āĻ¨
(#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):

āĻ•ā§āĻ˛āĻžāĻ¸ āĻŽā§‡āĻ‡āĻ¨ āĻ…ā§āĻ¯āĻžāĻ•ā§āĻŸāĻŋāĻ­āĻŋāĻŸāĻŋ: AppCompatActivity(), View.OnClickListener, TextWatcher {

āĻ¤āĻžāĻ°āĻĒāĻ° āĻ†āĻŽāĻ°āĻž āĻŦāĻŋāĻ˛āĻāĻĄāĻŋāĻŸāĻŸā§‡āĻ•ā§āĻ¸āĻŸ āĻ˛āĻŋāĻ¸ā§‡āĻ¨āĻžāĻ° (#17) āĻāĻŽā§āĻŦā§‡āĻĄ āĻ•āĻ°āĻŋ:

billEditText.addTextChangedListener(āĻāĻŸāĻŋ)

āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“ āĻ†āĻŽāĻ°āĻž TextWatcher (#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) {}

āĻ•ā§‹āĻŸāĻ˛āĻŋāĻ¨ā§‡ āĻāĻ•āĻŸāĻŋ āĻŸāĻŋāĻĒ āĻ•ā§āĻ¯āĻžāĻ˛āĻ•ā§āĻ˛ā§‡āĻŸāĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž: āĻāĻŸāĻŋ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡?

āĻ“āĻ¯āĻŧā§‡āĻ˛, āĻāĻ–āĻ¨ āĻāĻ•ā§‡āĻŦāĻžāĻ°ā§‡ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡! āĻ…āĻ­āĻŋāĻ¨āĻ¨ā§āĻĻāĻ¨, āĻ†āĻĒāĻ¨āĻŋ āĻ•ā§‹āĻŸāĻ˛āĻŋāĻ¨ā§‡ āĻ†āĻĒāĻ¨āĻžāĻ° āĻ¨āĻŋāĻœā§‡āĻ° "āĻŸāĻŋāĻĒ āĻ•ā§āĻ¯āĻžāĻ˛āĻ•ā§āĻ˛ā§‡āĻŸāĻ°" āĻ˛āĻŋāĻ–ā§‡āĻ›ā§‡āĻ¨ā§ˇ

āĻ•ā§‹āĻŸāĻ˛āĻŋāĻ¨ā§‡ āĻāĻ•āĻŸāĻŋ āĻŸāĻŋāĻĒ āĻ•ā§āĻ¯āĻžāĻ˛āĻ•ā§āĻ˛ā§‡āĻŸāĻ° āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž: āĻāĻŸāĻŋ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ•āĻžāĻœ āĻ•āĻ°ā§‡?

Skillbox āĻ¸ā§āĻĒāĻžāĻ°āĻŋāĻļ āĻ•āĻ°ā§‡:

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨