From 5a02467ee8b4c08ca3bf6ae7d7eacd9048d6a7cc Mon Sep 17 00:00:00 2001 From: tzugen Date: Wed, 22 Dec 2021 13:36:13 +0100 Subject: [PATCH] Use binding --- .../android-module-bootstrap.gradle | 1 + ultrasonic/build.gradle | 1 + .../moire/ultrasonic/fragment/MainFragment.kt | 53 +-- ultrasonic/src/main/res/layout/main.xml | 351 +++++++++--------- 4 files changed, 207 insertions(+), 199 deletions(-) diff --git a/gradle_scripts/android-module-bootstrap.gradle b/gradle_scripts/android-module-bootstrap.gradle index ab63228b..6bbfec2e 100644 --- a/gradle_scripts/android-module-bootstrap.gradle +++ b/gradle_scripts/android-module-bootstrap.gradle @@ -41,6 +41,7 @@ android { buildFeatures { buildConfig = false viewBinding true + dataBinding true } } diff --git a/ultrasonic/build.gradle b/ultrasonic/build.gradle index 536f5627..d99c253f 100644 --- a/ultrasonic/build.gradle +++ b/ultrasonic/build.gradle @@ -61,6 +61,7 @@ android { buildFeatures { viewBinding true + dataBinding true } compileOptions { diff --git a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/MainFragment.kt b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/MainFragment.kt index a9e3a41a..127e6a2b 100644 --- a/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/MainFragment.kt +++ b/ultrasonic/src/main/kotlin/org/moire/ultrasonic/fragment/MainFragment.kt @@ -4,7 +4,6 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.ScrollView import android.widget.TextView import androidx.core.view.isVisible import androidx.fragment.app.Fragment @@ -12,6 +11,7 @@ import androidx.navigation.Navigation import org.koin.core.component.KoinComponent import org.moire.ultrasonic.R import org.moire.ultrasonic.data.ActiveServerProvider.Companion.isOffline +import org.moire.ultrasonic.databinding.MainBinding import org.moire.ultrasonic.util.Constants import org.moire.ultrasonic.util.Settings import org.moire.ultrasonic.util.Util @@ -21,7 +21,6 @@ import org.moire.ultrasonic.util.Util */ class MainFragment : Fragment(), KoinComponent { - private lateinit var list: ScrollView private lateinit var musicTitle: TextView private lateinit var artistsButton: TextView private lateinit var albumsButton: TextView @@ -41,6 +40,8 @@ class MainFragment : Fragment(), KoinComponent { private lateinit var albumsAlphaByArtistButton: TextView private lateinit var videosButton: TextView + private var binding: MainBinding? = null + override fun onCreate(savedInstanceState: Bundle?) { Util.applyTheme(this.context) super.onCreate(savedInstanceState) @@ -50,13 +51,12 @@ class MainFragment : Fragment(), KoinComponent { inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? - ): View? { - return inflater.inflate(R.layout.main, container, false) + ): View { + binding = MainBinding.inflate(inflater, container, false) + return binding!!.root } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - list = view.findViewById(R.id.main_list) - setupButtons() setupClickListener() setupItemVisibility() @@ -81,25 +81,30 @@ class MainFragment : Fragment(), KoinComponent { } } + override fun onDestroyView() { + super.onDestroyView() + binding = null + } + private fun setupButtons() { - musicTitle = list.findViewById(R.id.main_music) - artistsButton = list.findViewById(R.id.main_artists_button) - albumsButton = list.findViewById(R.id.main_albums_button) - genresButton = list.findViewById(R.id.main_genres_button) - videosTitle = list.findViewById(R.id.main_videos_title) - songsTitle = list.findViewById(R.id.main_songs) - randomSongsButton = list.findViewById(R.id.main_songs_button) - songsStarredButton = list.findViewById(R.id.main_songs_starred) - albumsTitle = list.findViewById(R.id.main_albums) - albumsNewestButton = list.findViewById(R.id.main_albums_newest) - albumsRandomButton = list.findViewById(R.id.main_albums_random) - albumsHighestButton = list.findViewById(R.id.main_albums_highest) - albumsStarredButton = list.findViewById(R.id.main_albums_starred) - albumsRecentButton = list.findViewById(R.id.main_albums_recent) - albumsFrequentButton = list.findViewById(R.id.main_albums_frequent) - albumsAlphaByNameButton = list.findViewById(R.id.main_albums_alphaByName) - albumsAlphaByArtistButton = list.findViewById(R.id.main_albums_alphaByArtist) - videosButton = list.findViewById(R.id.main_videos) + musicTitle = binding!!.mainMusic + artistsButton = binding!!.mainArtistsButton + albumsButton = binding!!.mainAlbumsButton + genresButton = binding!!.mainGenresButton + videosTitle = binding!!.mainVideosTitle + songsTitle = binding!!.mainSongs + randomSongsButton = binding!!.mainSongsButton + songsStarredButton = binding!!.mainSongsStarred + albumsTitle = binding!!.mainAlbums + albumsNewestButton = binding!!.mainAlbumsNewest + albumsRandomButton = binding!!.mainAlbumsRandom + albumsHighestButton = binding!!.mainAlbumsHighest + albumsStarredButton = binding!!.mainAlbumsStarred + albumsRecentButton = binding!!.mainAlbumsRecent + albumsFrequentButton = binding!!.mainAlbumsFrequent + albumsAlphaByNameButton = binding!!.mainAlbumsAlphaByName + albumsAlphaByArtistButton = binding!!.mainAlbumsAlphaByArtist + videosButton = binding!!.mainVideos } private fun setupItemVisibility() { diff --git a/ultrasonic/src/main/res/layout/main.xml b/ultrasonic/src/main/res/layout/main.xml index 83d627aa..1b384738 100644 --- a/ultrasonic/src/main/res/layout/main.xml +++ b/ultrasonic/src/main/res/layout/main.xml @@ -1,215 +1,216 @@ - - + + + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:orientation="vertical"> + android:id="@+id/main_music" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:paddingStart="6dp" + android:text="@string/main.music" + android:textAllCaps="true" + android:textAppearance="?android:attr/textAppearanceSmall" + android:textColor="@color/cyan" + android:textStyle="bold" /> + android:id="@+id/main_artists_button" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:minHeight="40dip" + android:paddingStart="6dip" + android:paddingEnd="6dip" + android:text="@string/main.artists_title" + android:textAppearance="?android:attr/textAppearanceMedium" /> + android:id="@+id/main_albums_button" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:minHeight="40dip" + android:paddingStart="6dip" + android:paddingEnd="6dip" + android:text="@string/main.albums_title" + android:textAppearance="?android:attr/textAppearanceMedium" /> + android:id="@+id/main_genres_button" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:minHeight="40dip" + android:paddingStart="6dip" + android:paddingEnd="6dip" + android:text="@string/main.genres_title" + android:textAppearance="?android:attr/textAppearanceMedium" /> + android:id="@+id/main_songs" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:paddingStart="6dp" + android:text="@string/main.songs_title" + android:textAllCaps="true" + android:textAppearance="?android:attr/textAppearanceSmall" + android:textColor="@color/cyan" + android:textStyle="bold" /> + android:id="@+id/main_songs_button" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:minHeight="40dip" + android:paddingStart="6dip" + android:paddingEnd="6dip" + android:text="@string/main.songs_random" + android:textAppearance="?android:attr/textAppearanceMedium" /> + android:id="@+id/main_songs_starred" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:minHeight="40dip" + android:paddingStart="6dip" + android:paddingEnd="6dip" + android:text="@string/main.songs_starred" + android:textAppearance="?android:attr/textAppearanceMedium" /> + android:id="@+id/main_albums" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:paddingStart="6dp" + android:text="@string/main.albums_title" + android:textAllCaps="true" + android:textAppearance="?android:attr/textAppearanceSmall" + android:textColor="@color/cyan" + android:textStyle="bold" /> + android:id="@+id/main_albums_newest" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:minHeight="40dip" + android:paddingStart="6dip" + android:paddingEnd="6dip" + android:text="@string/main.albums_newest" + android:textAppearance="?android:attr/textAppearanceMedium" /> + android:id="@+id/main_albums_recent" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:minHeight="40dip" + android:paddingStart="6dip" + android:paddingEnd="6dip" + android:text="@string/main.albums_recent" + android:textAppearance="?android:attr/textAppearanceMedium" /> + android:id="@+id/main_albums_frequent" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:minHeight="40dip" + android:paddingStart="6dip" + android:paddingEnd="6dip" + android:text="@string/main.albums_frequent" + android:textAppearance="?android:attr/textAppearanceMedium" /> + android:id="@+id/main_albums_highest" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:minHeight="40dip" + android:paddingStart="6dip" + android:paddingEnd="6dip" + android:text="@string/main.albums_highest" + android:textAppearance="?android:attr/textAppearanceMedium" /> + android:id="@+id/main_albums_random" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:minHeight="40dip" + android:paddingStart="6dip" + android:paddingEnd="6dip" + android:text="@string/main.albums_random" + android:textAppearance="?android:attr/textAppearanceMedium" /> + android:id="@+id/main_albums_starred" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:minHeight="40dip" + android:paddingStart="6dip" + android:paddingEnd="6dip" + android:text="@string/main.albums_starred" + android:textAppearance="?android:attr/textAppearanceMedium" /> + android:id="@+id/main_albums_alphaByName" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:minHeight="40dip" + android:paddingStart="6dip" + android:paddingEnd="6dip" + android:text="@string/main.albums_alphaByName" + android:textAppearance="?android:attr/textAppearanceMedium" /> + android:id="@+id/main_albums_alphaByArtist" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:minHeight="40dip" + android:paddingStart="6dip" + android:paddingEnd="6dip" + android:text="@string/main.albums_alphaByArtist" + android:textAppearance="?android:attr/textAppearanceMedium" /> + android:id="@+id/main_videos_title" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:paddingStart="6dp" + android:text="@string/main.videos" + android:textAllCaps="true" + android:textAppearance="?android:attr/textAppearanceSmall" + android:textColor="@color/cyan" + android:textStyle="bold" /> + android:id="@+id/main_videos" + android:layout_width="fill_parent" + android:layout_height="wrap_content" + android:gravity="center_vertical" + android:minHeight="40dip" + android:paddingStart="6dip" + android:paddingEnd="6dip" + android:text="@string/main.videos" + android:textAppearance="?android:attr/textAppearanceMedium" /> - \ No newline at end of file + + \ No newline at end of file