From f4d8a9c6fa8f805a9dedb626ef343aa37943c079 Mon Sep 17 00:00:00 2001 From: Clyhtsuriva Date: Thu, 18 Feb 2021 19:42:15 +0100 Subject: Implementing API calls for the top mangas. Test and Debug with snackbar : ok Adding internet access. Removing useless News class. --- .../main/java/xyz/adjutor/aniki/RestTopMangaResponse.kt | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 app/src/main/java/xyz/adjutor/aniki/RestTopMangaResponse.kt (limited to 'app/src/main/java/xyz/adjutor/aniki/RestTopMangaResponse.kt') diff --git a/app/src/main/java/xyz/adjutor/aniki/RestTopMangaResponse.kt b/app/src/main/java/xyz/adjutor/aniki/RestTopMangaResponse.kt new file mode 100644 index 0000000..8cd5f2b --- /dev/null +++ b/app/src/main/java/xyz/adjutor/aniki/RestTopMangaResponse.kt @@ -0,0 +1,15 @@ +package xyz.adjutor.aniki + +import com.google.gson.annotations.SerializedName + +class RestTopMangaResponse { + + @SerializedName("request_hash") + var request_hash: String? = null + @SerializedName("request_cached") + var request_cached: Boolean? = null + @SerializedName("request_cached_expiry") + var request_cached_expiry: Int? = null + @SerializedName("top") + var top = ArrayList() +} \ No newline at end of file -- cgit v1.2.3 From eaef2672c25baaf370c72158d5236f40f6fea01f Mon Sep 17 00:00:00 2001 From: Clyhtsuriva Date: Thu, 18 Feb 2021 21:55:37 +0100 Subject: Preparing Preparing the implementation of the API datas to our recycerview in a fragment. --- .../main/java/xyz/adjutor/aniki/MangaAdapter.kt | 12 ++++---- .../java/xyz/adjutor/aniki/RestTopMangaResponse.kt | 4 +++ .../main/java/xyz/adjutor/aniki/TopMangaPage.kt | 29 +++++++++---------- app/src/main/res/layout/item_layout.xml | 33 ++++++++++++++-------- app/src/main/res/values/strings.xml | 2 +- 5 files changed, 48 insertions(+), 32 deletions(-) (limited to 'app/src/main/java/xyz/adjutor/aniki/RestTopMangaResponse.kt') diff --git a/app/src/main/java/xyz/adjutor/aniki/MangaAdapter.kt b/app/src/main/java/xyz/adjutor/aniki/MangaAdapter.kt index 8e1c8f2..9f7a373 100644 --- a/app/src/main/java/xyz/adjutor/aniki/MangaAdapter.kt +++ b/app/src/main/java/xyz/adjutor/aniki/MangaAdapter.kt @@ -3,6 +3,7 @@ package xyz.adjutor.aniki import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.ImageView import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import java.util.ArrayList @@ -12,11 +13,10 @@ class MangaAdapter(val mangaList: Array) : // Describes an item view and its place within the RecyclerView class MangaViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { - private val mangaTextView: TextView = itemView.findViewById(R.id.tv_title) + val mangaTitle: TextView = itemView.findViewById(R.id.tv_title) + val mangaRank: TextView = itemView.findViewById(R.id.tv_rank) + val mangaImage: ImageView = itemView.findViewById(R.id.iv_image) - fun bind(word: String) { - mangaTextView.text = word - } } // Returns a new ViewHolder @@ -34,7 +34,9 @@ class MangaAdapter(val mangaList: Array) : // Displays data at a certain position override fun onBindViewHolder(holder: MangaViewHolder, position: Int) { - holder.bind(mangaList[position]) + holder.mangaTitle.text = mangaList[position] //use specific json data + holder.mangaRank.text = position.toString() //replace by the actual rank + //holder.mangaImage.setImageResource(mangaList[position]) //replace by the manga image } } diff --git a/app/src/main/java/xyz/adjutor/aniki/RestTopMangaResponse.kt b/app/src/main/java/xyz/adjutor/aniki/RestTopMangaResponse.kt index 8cd5f2b..46b3bd3 100644 --- a/app/src/main/java/xyz/adjutor/aniki/RestTopMangaResponse.kt +++ b/app/src/main/java/xyz/adjutor/aniki/RestTopMangaResponse.kt @@ -12,4 +12,8 @@ class RestTopMangaResponse { var request_cached_expiry: Int? = null @SerializedName("top") var top = ArrayList() + + fun getResults(): ArrayList { + return top + } } \ No newline at end of file diff --git a/app/src/main/java/xyz/adjutor/aniki/TopMangaPage.kt b/app/src/main/java/xyz/adjutor/aniki/TopMangaPage.kt index 9496053..729ff6f 100644 --- a/app/src/main/java/xyz/adjutor/aniki/TopMangaPage.kt +++ b/app/src/main/java/xyz/adjutor/aniki/TopMangaPage.kt @@ -26,17 +26,8 @@ class TopMangaPage : Fragment() { // Inflate the layout for this fragment val view = inflater.inflate(R.layout.top_manga_page, container, false) - // Retrieves data from mangasource - val mangaList = MangaSource(view.context).getMangaList() + makeApiCall(view, base_url) - - makeApiCall(base_url) - - - val recyclerView: RecyclerView = view.findViewById(R.id.recycler_view) - recyclerView.setHasFixedSize(true) - recyclerView.layoutManager = LinearLayoutManager(view.context) - recyclerView.adapter = MangaAdapter(mangaList) return view } @@ -49,7 +40,14 @@ class TopMangaPage : Fragment() { } - fun makeApiCall(BASE_URL: String) { + fun showList(view: View, mangaList: Array ){ + val recyclerView: RecyclerView = view.findViewById(R.id.recycler_view) + recyclerView.setHasFixedSize(true) + recyclerView.layoutManager = LinearLayoutManager(view.context) + recyclerView.adapter = MangaAdapter(mangaList) + } + + fun makeApiCall(view: View, BASE_URL: String) { val gson = GsonBuilder() .setLenient() .create() @@ -62,9 +60,12 @@ class TopMangaPage : Fragment() { call.enqueue(object : Callback { override fun onResponse(call: Call, response: Response) { if(response.isSuccessful && response.body() != null){ - val topMangaResponse = response.body() + val topMangaResponse = response.body()!!.getResults() Snackbar.make(requireView(), "HA? YOU THOUGHT IT WAS AN ERROR !? BUT IT WAS I, API !", Snackbar.LENGTH_LONG) .setAction("Action", null).show() + // Retrieves data from mangasource + val mangaList = MangaSource(view.context).getMangaList() + showList(view, mangaList) } else { showError() } @@ -74,9 +75,7 @@ class TopMangaPage : Fragment() { showError() } - - } - ) + }) } private fun showError() { diff --git a/app/src/main/res/layout/item_layout.xml b/app/src/main/res/layout/item_layout.xml index 8500bc7..eb65d60 100644 --- a/app/src/main/res/layout/item_layout.xml +++ b/app/src/main/res/layout/item_layout.xml @@ -29,17 +29,28 @@ android:src="@mipmap/ic_launcher_round" android:contentDescription="@string/rv_image" /> - + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ccd2ae8..5301008 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -13,7 +13,7 @@ Article Page Top Manga Page Title - This is a description + 0 image Image of manga -- cgit v1.2.3 From f650e3b9d80633d90e13b07b64e5695564d37359 Mon Sep 17 00:00:00 2001 From: Clyhtsuriva Date: Fri, 19 Feb 2021 12:00:30 +0100 Subject: Adaptation of the adapter, the rest response and the fragment. --- app/src/main/java/xyz/adjutor/aniki/MangaAdapter.kt | 8 ++++---- app/src/main/java/xyz/adjutor/aniki/RestTopMangaResponse.kt | 6 +++--- app/src/main/java/xyz/adjutor/aniki/TopMangaPage.kt | 5 +++-- 3 files changed, 10 insertions(+), 9 deletions(-) (limited to 'app/src/main/java/xyz/adjutor/aniki/RestTopMangaResponse.kt') diff --git a/app/src/main/java/xyz/adjutor/aniki/MangaAdapter.kt b/app/src/main/java/xyz/adjutor/aniki/MangaAdapter.kt index 9f7a373..f378c65 100644 --- a/app/src/main/java/xyz/adjutor/aniki/MangaAdapter.kt +++ b/app/src/main/java/xyz/adjutor/aniki/MangaAdapter.kt @@ -6,9 +6,8 @@ import android.view.ViewGroup import android.widget.ImageView import android.widget.TextView import androidx.recyclerview.widget.RecyclerView -import java.util.ArrayList -class MangaAdapter(val mangaList: Array) : +class MangaAdapter(val mangaList: List) : RecyclerView.Adapter() { // Describes an item view and its place within the RecyclerView @@ -34,8 +33,9 @@ class MangaAdapter(val mangaList: Array) : // Displays data at a certain position override fun onBindViewHolder(holder: MangaViewHolder, position: Int) { - holder.mangaTitle.text = mangaList[position] //use specific json data - holder.mangaRank.text = position.toString() //replace by the actual rank + val currentManga: TopManga = mangaList[position] + holder.mangaTitle.text = currentManga.title //use specific json data + holder.mangaRank.text = currentManga.rank.toString() //replace by the actual rank //holder.mangaImage.setImageResource(mangaList[position]) //replace by the manga image } } diff --git a/app/src/main/java/xyz/adjutor/aniki/RestTopMangaResponse.kt b/app/src/main/java/xyz/adjutor/aniki/RestTopMangaResponse.kt index 46b3bd3..0a7ebc8 100644 --- a/app/src/main/java/xyz/adjutor/aniki/RestTopMangaResponse.kt +++ b/app/src/main/java/xyz/adjutor/aniki/RestTopMangaResponse.kt @@ -11,9 +11,9 @@ class RestTopMangaResponse { @SerializedName("request_cached_expiry") var request_cached_expiry: Int? = null @SerializedName("top") - var top = ArrayList() + var top: List? = null - fun getResults(): ArrayList { - return top + fun getResults(): List { + return top!! } } \ No newline at end of file diff --git a/app/src/main/java/xyz/adjutor/aniki/TopMangaPage.kt b/app/src/main/java/xyz/adjutor/aniki/TopMangaPage.kt index 729ff6f..45e714a 100644 --- a/app/src/main/java/xyz/adjutor/aniki/TopMangaPage.kt +++ b/app/src/main/java/xyz/adjutor/aniki/TopMangaPage.kt @@ -40,7 +40,7 @@ class TopMangaPage : Fragment() { } - fun showList(view: View, mangaList: Array ){ + fun showList(view: View, mangaList: List ){ val recyclerView: RecyclerView = view.findViewById(R.id.recycler_view) recyclerView.setHasFixedSize(true) recyclerView.layoutManager = LinearLayoutManager(view.context) @@ -64,7 +64,8 @@ class TopMangaPage : Fragment() { Snackbar.make(requireView(), "HA? YOU THOUGHT IT WAS AN ERROR !? BUT IT WAS I, API !", Snackbar.LENGTH_LONG) .setAction("Action", null).show() // Retrieves data from mangasource - val mangaList = MangaSource(view.context).getMangaList() + //val mangaList = MangaSource(view.context).getMangaList() + val mangaList=topMangaResponse showList(view, mangaList) } else { showError() -- cgit v1.2.3