I have list (list of novels) that needs to show on a recycler view, I am implementing an event listener for each item in the list, every novel list contain books. I want to show book details in a separate activity (DetailActivity) when a item is clicked.
Should make another adapter or not ? please help me
I am stuck to add nested array list, because I have ItemAdapter
, which has a constructor which only accept a novel list and list does not contain any books.
private ArrayList<Pemodelan_Item> dataNovelist() {
ArrayList<Pemodelan_Item> list = new ArrayList<>();
list.add(new Pemodelan_Item("Fiersa Besari.", "Bandung", R.drawable.fiersa, R.drawable.bandung_3, R.string.long_desc_andrea));
list.add(new Pemodelan_Item("Ahmad Fuadi", "Sumatra Barat", R.drawable.ahmad, R.drawable.sumbar_2, R.string.long_desc_andrea));
list.add(new Pemodelan_Item("Pidi Baiq", "Bandung", R.drawable.pidi, R.drawable.bandung_2, R.string.long_desc_andrea));
list.add(new Pemodelan_Item("Andrea Hirata", "Belitung", R.drawable.andrea, R.drawable.belitung, R.string.long_desc_andrea));
list.add(new Pemodelan_Item("Tere Liye", "Makasar", R.drawable.tereliye, R.drawable.makasar, R.string.long_desc_andrea));
list.add(new Pemodelan_Item("Dee Lestari", "Bandung", R.drawable.dee, R.drawable.bandung, R.string.long_desc_andrea));
list.add(new Pemodelan_Item("Boy Candra", "Sumatra Barat", R.drawable.boycandra, R.drawable.sumbar, R.string.long_desc_andrea));
list.add(new Pemodelan_Item("Pramoedya Ananta Toer", "Jakarta", R.drawable.toer, R.drawable.jkt, R.string.long_desc_andrea));
list.add(new Pemodelan_Item("Erisca Febriani", "Lampung", R.drawable.erisca, R.drawable.lampung, R.string.long_desc_andrea));
list.add(new Pemodelan_Item("habiburrahman el shirazy", "Semarang", R.drawable.habiburahman, R.drawable.semarang, R.string.long_desc_andrea));
return list;
}
package com.example.submission_novelist;
import android.content.Context;
import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
public class ItemAdapter extends RecyclerView.Adapter<ItemAdapter.ViewHolder> {
private ArrayList<Pemodelan_Item> novelists;
private Context mContext;
private OnItemClickCallback onItemClickCallback;
public void setOnItemClickCallback(OnItemClickCallback onItemClickCallback){
this.onItemClickCallback = onItemClickCallback;
}
public ItemAdapter(Context context, ArrayList<Pemodelan_Item> novelistss) {
this.novelists = novelistss;
mContext = context;
}
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.item_layout, viewGroup, false);
return new ViewHolder(v);
}
@Override
public void onBindViewHolder(final ViewHolder viewHolder, int i) {
Pemodelan_Item pemodelan_item = novelists.get(i);
viewHolder.tvNovelist.setText(pemodelan_item.getmNovelist());
viewHolder.tvAsal.setText(pemodelan_item.getmAsal());
viewHolder.ivNovelist.setImageResource(pemodelan_item.getmImgNovelist());
viewHolder.ivCardBack.setImageResource(pemodelan_item.getmImgCardBackground());
viewHolder.cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Toast.makeText(viewHolder.cardView.getContext(), "saya" + novelists.get(viewHolder.getAdapterPosition()).getmNovelist(), Toast.LENGTH_SHORT).show();
onItemClickCallback.onItemClicked(novelists.get(viewHolder.getAdapterPosition()));
}
});
}
@Override
public int getItemCount() {
if (novelists != null) {
return novelists.size();
} else {
return 0;
}
}
public class ViewHolder extends RecyclerView.ViewHolder {
public View v;
public TextView tvNovelist;
public TextView tvAsal;
public ImageView ivNovelist;
public ImageView ivCardBack;
public CardView cardView;
public ViewHolder(View itemView) {
super(itemView);
this.v = itemView;
tvNovelist = v.findViewById(R.id.novelist_text_view);
tvAsal = v.findViewById(R.id.asal_text_view);
ivNovelist = v.findViewById(R.id.novelist_image_view);
ivCardBack = v.findViewById(R.id.cardViewBackground);
cardView = v.findViewById(R.id.myCardView);
}
}
public interface OnItemClickCallback{
void onItemClicked(Pemodelan_Item pemodelan_item);
}
}