前提・実現したいこと
以下の画像のように、RecyclerView(縦)とRecyclerView(横)に表示を行う画面を開発しています。
現状、縦のリスト表示はうまくいっているのですが、横のリスト表示がうまく動作せず苦慮しております。
問題解決になにかご助言などいただければ幸いです。
縦のリスト情報はFragmentにてAPIより取得しList<String>に格納した後に、縦RecyclerViewのAdapterに設定し表示、横のリスト情報は縦RecyclerViewのAdapterのonBindViewHolderのVerticalViewHolder.setDataでAPIより取得しList<String>に格納した後にAPIのonResponseにて、横RecyclerViewのAdapterに設定し表示する。
発生している問題・エラーメッセージ
このやり方では、横に表示する画像は、縦リストの最終行にしか表示されず、どのようにすればよいか苦慮しています。
問題点の想定としては、横に表示する画像情報の取得を、縦RecyclerViewのVerticalViewHolder.setDataでAPIより取得し、onResponseにて
横RecyclerViewのAdapterに設定する場面で、APIの非同期処理とRecyclerViewの縦表示処理が合わずに最後の行だけは、表示されているのではと思われます。
該当のソースコード
@Override public void onBindViewHolder(@NonNull HomeHashtagVerticalAdapter.VerticalViewHolder VerticalViewHolder, int position) { // 1行分の縦スクロール情報を設定する String mHashtagName = mVerticalMapList.get(position).get("SearchHashTagName"); VerticalViewHolder.mHashTagName.setText(mHashtagName); VerticalViewHolder.mHashTagIcon.setImageResource(R.drawable.ic_hashtag); // 縦行分の横スクロール画像情報をhorizontal_recyclerに設定する String SearchHashTagId = mVerticalMapList.get(position).get("SearchHashTagId"); VerticalViewHolder.setData(SearchHashTagId, context); } class VerticalViewHolder extends RecyclerView.ViewHolder { ImageView mHashTagIcon; TextView mHashTagName; VerticalViewHolder(View itemView) { super(itemView); mHashTagName = itemView.findViewById(R.id.recycler_hashtag_name); mHashTagIcon = itemView.findViewById(R.id.recycler_hashtag_icon); } void setData(String pSearchHashTagId, Context context) {
// Setting Horizontal Recycler View
recyclerView = itemView.findViewById(R.id.horizontal_recycler_view);
recyclerView.setLayoutManager(new LinearLayoutManager(context, LinearLayoutManager.HORIZONTAL, false));
getSearchHashStampData(pSearchHashTagId, API_LOAD_LIMITTE, DEFAULT_OFFSET);
} }
↑上記のgetSearchHashStampData()にてAPIをCALLし縦1行に対して、横に表示する画像のURL情報を取得しています。
APIはRetrofit2 + GSONによりCALLし、pSearchHashTagIdに対し情報を取得できることは確認しております。
あなたの回答
tips
プレビュー