質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Q&A

0回答

1221閲覧

RecyclerView(縦)とRecyclerView(横)に表示を行う際、横の表示がうまく表示されない

bagi

総合スコア4

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

0グッド

0クリップ

投稿2020/06/24 00:05

前提・実現したいこと

以下の画像のように、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に対し情報を取得できることは確認しております。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hoshi-takanori

2020/06/30 06:11

ViewHolder はあくまでもビューであり、表示に関わることに専念すべきで、データはビューとは切り離して管理すべきだと思います。(例えば、上下にスクロールを繰り返すと、何度も同じ横のデータを取得しにいくのでは。onBindViewHolder のタイミングで API をまだ叩いてなければ叩くのはありだと思いますが。)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問