I am creating a RecyclerView for my android application with some dummy data which has two set of datas. But the layout is not iterating twice instead it shows the first data correctly.
public class HomeScreenFragment extends Fragment {
private ArrayList<String> flags = new ArrayList<>();
private ArrayList<String> leagues = new ArrayList<>();
private ArrayList<String> dates = new ArrayList<>();
private Context context;
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_home, container, false);
return root;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
initData();
}
private void initData() {
leagues.add("Indian premiere league");
dates.add("03-Dec");
leagues.add("Srilankan Premiere league");
dates.add("04-Dec");
initRecyclerView();
}
private void initRecyclerView() {
RecyclerView recyclerView = getView().findViewById(R.id.homeRecyclerView);
HomeScreenRVAdapter adapter = new HomeScreenRVAdapter(flags,leagues,dates,context);
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(context));
}
}
RecyclerView
public class HomeScreenRVAdapter extends RecyclerView.Adapter<HomeScreenRVAdapter.ViewHolder> {
private static final String TAG = "HomeScreenRVAdapter";
private String BASE_URL, API_KEY;
private ArrayList<String> flags = new ArrayList<>();
private ArrayList<String> leagues = new ArrayList<>();
private ArrayList<String> dates = new ArrayList<>();
private Context context;
public HomeScreenRVAdapter(ArrayList<String> flags, ArrayList<String> leagues, ArrayList<String> dates, Context context) {
this.flags = flags;
this.leagues = leagues;
this.dates = dates;
this.context = context;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_home, parent, false);
ViewHolder holder = new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(@NonNull final ViewHolder holder, final int position) {
holder.league.setText(leagues.get(position));
holder.date.setText(dates.get(position));
}
@Override
public int getItemCount() {
return leagues.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
// HEADER WIDGETS
ExpansionHeader expansionHeader;
ImageView flag;
TextView league, date;
// LAYOUT WIDGETS
ExpansionLayout expansionLayout;
TextView minutes, local, visitor, localScore, visitorScore;
ImageView favourite;
public ViewHolder(@NonNull View itemView) {
super(itemView);
expansionHeader = itemView.findViewById(R.id.expansionHeader);
flag = itemView.findViewById(R.id.headerFlag);
league = itemView.findViewById(R.id.expansionHeaderLeague);
date = itemView.findViewById(R.id.expansionHeaderDate);
}
}
}
I want to make the app iterate the layout (layout_home) as many times as data comes. But it is not iterating. Otherwise is there anyway to iterate only the expansion layout alone?