diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 49c2809..30903a5 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -44,4 +44,8 @@ dependencies { testImplementation(libs.junit) androidTestImplementation(libs.ext.junit) androidTestImplementation(libs.espresso.core) + + /*Dependecia para usar glide y cargar imagenes mediante url*/ + implementation("com.github.bumptech.glide:glide:4.16.0") + annotationProcessor("com.github.bumptech.glide:compiler:4.16.0") } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 700f575..0e05227 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,6 +2,9 @@ + + + { +public class HomeAdapter extends RecyclerView.Adapter { - private List imageList; + private List itemList; + private String sectionTitle; // Para saber si es Airing o no - public HomeAdapter(List imageList) { - this.imageList = imageList; + private static final int TYPE_AIRING = 0; + private static final int TYPE_ANIME_MANGA = 1; + + public HomeAdapter(List itemList, String sectionTitle) { + this.itemList = itemList; + this.sectionTitle = sectionTitle; + } + + @Override + public int getItemViewType(int position) { + if (sectionTitle.equalsIgnoreCase("Airing")) { + return TYPE_AIRING; + } else { + return TYPE_ANIME_MANGA; + } } @NonNull @Override - public HomeAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_anime_card, parent, false); - return new ViewHolder(view); + public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + if (viewType == TYPE_AIRING) { + View view = LayoutInflater.from(parent.getContext()) + .inflate(R.layout.item_anime_horizontal_card, parent, false); + return new AiringViewHolder(view); + } else { + View view = LayoutInflater.from(parent.getContext()) + .inflate(R.layout.item_anime_card, parent, false); + return new AnimeViewHolder(view); + } } @Override - public void onBindViewHolder(@NonNull HomeAdapter.ViewHolder holder, int position) { - holder.imageView.setImageResource(imageList.get(position)); + public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) { + ItemModel item = itemList.get(position); + + if (holder instanceof AiringViewHolder) { + ((AiringViewHolder) holder).bind(item); + } else if (holder instanceof AnimeViewHolder) { + ((AnimeViewHolder) holder).bind(item); + } } @Override public int getItemCount() { - return imageList.size(); - } - - public static class ViewHolder extends RecyclerView.ViewHolder { - ImageView imageView; - public ViewHolder(View itemView) { - super(itemView); - imageView = itemView.findViewById(R.id.imageView); - } + return itemList.size(); } } diff --git a/app/src/main/java/com/santiparra/yomitrack/model/adapters/sectionadapter/SectionAdapter.java b/app/src/main/java/com/santiparra/yomitrack/model/adapters/sectionadapter/SectionAdapter.java index 030bdc1..87a021c 100644 --- a/app/src/main/java/com/santiparra/yomitrack/model/adapters/sectionadapter/SectionAdapter.java +++ b/app/src/main/java/com/santiparra/yomitrack/model/adapters/sectionadapter/SectionAdapter.java @@ -9,8 +9,9 @@ import androidx.annotation.NonNull; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import com.santiparra.yomitrack.model.ItemModel; +import com.santiparra.yomitrack.ui.adapters.HomeAdapter; import com.santiparra.yomitrack.R; -import com.santiparra.yomitrack.model.adapters.homeadapter.HomeAdapter; import java.util.List; import java.util.Map; @@ -18,9 +19,9 @@ import java.util.Map; public class SectionAdapter extends RecyclerView.Adapter { private final List sectionTitles; - private final Map> sectionImages; + private final Map> sectionImages; - public SectionAdapter(List sectionTitles, Map> sectionImages) { + public SectionAdapter(List sectionTitles, Map> sectionImages) { this.sectionTitles = sectionTitles; this.sectionImages = sectionImages; } @@ -35,11 +36,11 @@ public class SectionAdapter extends RecyclerView.Adapter images = sectionImages.get(title); + List items = sectionImages.get(title); holder.sectionTitle.setText(title); - HomeAdapter homeAdapter = new HomeAdapter(images); + HomeAdapter homeAdapter = new HomeAdapter(items, title); holder.sectionRecycler.setLayoutManager( new LinearLayoutManager(holder.itemView.getContext(), LinearLayoutManager.HORIZONTAL, false) ); diff --git a/app/src/main/java/com/santiparra/yomitrack/ui/fragments/home/FragmentHome.java b/app/src/main/java/com/santiparra/yomitrack/ui/fragments/home/FragmentHome.java index 1373c3d..0d843d9 100644 --- a/app/src/main/java/com/santiparra/yomitrack/ui/fragments/home/FragmentHome.java +++ b/app/src/main/java/com/santiparra/yomitrack/ui/fragments/home/FragmentHome.java @@ -10,9 +10,10 @@ import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.santiparra.yomitrack.R; -import com.santiparra.yomitrack.model.adapters.homeadapter.HomeAdapter; +import com.santiparra.yomitrack.model.ItemModel; import com.santiparra.yomitrack.model.adapters.sectionadapter.SectionAdapter; +import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; @@ -20,10 +21,8 @@ import java.util.Map; public class FragmentHome extends Fragment { - private RecyclerView horizontalRecyclerView; - public FragmentHome() { - super(R.layout.fragment_home); // Estás usando ViewBinding/Inflado automático por constructor + super(R.layout.fragment_home); } @Override @@ -32,18 +31,35 @@ public class FragmentHome extends Fragment { RecyclerView mainRecyclerView = view.findViewById(R.id.mainRecyclerView); + // Crear las secciones List sectionTitles = Arrays.asList( "Airing", "Anime in Progress", "Manga in Progress" ); - Map> sectionImages = new HashMap<>(); - sectionImages.put("Airing", Arrays.asList(R.drawable.imagen1, R.drawable.imagen2, R.drawable.imagen3)); - sectionImages.put("Anime in Progress", Arrays.asList(R.drawable.imagen4, R.drawable.imagen5)); - sectionImages.put("Manga in Progress", Arrays.asList(R.drawable.imagen6, R.drawable.imagen7, R.drawable.imagen8)); + // Crear el contenido de cada sección como List + Map> sectionItems = new HashMap<>(); - SectionAdapter adapter = new SectionAdapter(sectionTitles, sectionImages); + List airingItems = new ArrayList<>(); + airingItems.add(new ItemModel("Naruto", "5/220", "https://i.imgur.com/N5uCbDu.jpg", ItemModel.ContentType.ANIME)); + airingItems.add(new ItemModel("One Piece", "900/1100", "https://i.imgur.com/VgVfG6K.jpg", ItemModel.ContentType.ANIME)); + airingItems.add(new ItemModel("Bleach", "100/366", "https://i.imgur.com/I0d1HyA.jpg", ItemModel.ContentType.ANIME)); + + List animeInProgressItems = new ArrayList<>(); + animeInProgressItems.add(new ItemModel("Attack on Titan", "16/25", "https://i.imgur.com/z4d4kWk.jpg", ItemModel.ContentType.ANIME)); + animeInProgressItems.add(new ItemModel("Jujutsu Kaisen", "10/24", "https://i.imgur.com/lWhD6Zc.jpg", ItemModel.ContentType.ANIME)); + + List mangaInProgressItems = new ArrayList<>(); + mangaInProgressItems.add(new ItemModel("Chainsaw Man", "45/100", "https://i.imgur.com/7tZ0h8R.jpg", ItemModel.ContentType.MANGA)); + mangaInProgressItems.add(new ItemModel("Berserk", "370/380", "https://i.imgur.com/8FJYYHo.jpg", ItemModel.ContentType.MANGA)); + + // Asignar los items a las secciones + sectionItems.put("Airing", airingItems); + sectionItems.put("Anime in Progress", animeInProgressItems); + sectionItems.put("Manga in Progress", mangaInProgressItems); + + // Configurar RecyclerView + SectionAdapter adapter = new SectionAdapter(sectionTitles, sectionItems); mainRecyclerView.setLayoutManager(new LinearLayoutManager(getContext())); mainRecyclerView.setAdapter(adapter); } - } diff --git a/app/src/main/res/layout/item_anime_card.xml b/app/src/main/res/layout/item_anime_card.xml index e7f7edd..59f56a4 100644 --- a/app/src/main/res/layout/item_anime_card.xml +++ b/app/src/main/res/layout/item_anime_card.xml @@ -8,7 +8,7 @@ android:gravity="center_horizontal"> + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3630e12..20c4361 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -3,4 +3,5 @@ List of home sections (Airing, Reading, etc.) + Media Image \ No newline at end of file