[解決済み] 単品で表示されるリサイクラービュー
2022-05-11 05:28:40
質問
recyclerviewが1つのアイテムしか表示されないという奇妙なエラーに直面しています。以下は、私のリサイクルビューアダプタのコードです。
public class ChatAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
List<chat> chats;
String username;
final int My=0,Their=1;
public ChatAdapter(List<chat> chats) {
this.chats = chats;
this.username = PushApp.getApp().getSPF().getStringData(Constants.ANAME);
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
RecyclerView.ViewHolder viewHolder;
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
switch (viewType) {
case My:
View v1 = inflater.inflate(R.layout.my_chat_child, parent, false);
viewHolder = new MyChatHolder(v1);
break;
case Their:
View v2 = inflater.inflate(R.layout.their_chat_child, parent, false);
viewHolder = new TheirMessageHolder(v2);
break;
default:
View v = inflater.inflate(R.layout.my_chat_child, parent, false);
viewHolder = new MyChatHolder(v);
break;
}
return viewHolder;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
switch (holder.getItemViewType()) {
case My:
MyChatHolder myChatHolder = (MyChatHolder) holder;
myChatHolder.setMyMessage(chats.get(position).getMessage());
break;
case Their:
TheirMessageHolder theirMessageHolder = (TheirMessageHolder) holder;
theirMessageHolder.setTheirChat(chats.get(position).getFrom(), chats.get(position).getMessage());
break;
}
}
@Override
public int getItemViewType(int position) {
if(username.equalsIgnoreCase(chats.get(position).getFrom()))
return My;
return Their;
}
@Override
public int getItemCount() {
return chats.size();
}}
このコードはすでに他のアプリで使用しており、完璧に動作しています。チャットのデータも確認しましたが、こちらも完璧です。
git repoのレイアウトファイルへのリンクはこちらです。 レイアウトファイル
どのように解決するのですか?
を使用しないでください。
match_parent
を使わないでください。1つのアイテムが画面全体を縦に埋め尽くしてしまい、他のアイテムが見えなくなってしまいます。
関連
-
Android端末にADBが接続できない!を解決。理由: デバイスが認証されていない!
-
Androidで発生した問題、解決策とヒント
-
RuntimeException: アクティビティを開始できません ComponentInfo solution
-
IllegalStateException。ArrayAdapter は、リソース ID が TextView である必要があります。
-
アンドロイドスタジオのエラーを解決する --> Error:(1, 0) id 'com.android.application' を持つプラグインが見つかりません。
-
ライブラリをモジュールとしてインポートする際にエラーが発生しました。Error:A problem occurred configuring project ':library'.
-
プロセス 'command 'F:\sdkbuild-tools', 26.0.2 AAAPT.exe' finished with non-zero exit value 1
-
Android カスタムスピナーコントロールのドロップダウン・ボックスの実装
-
超シンプルなアンドロイドのタイムディレイ機能
-
アンドロイドスタジオソフトウェア使用詳細説明書
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
android:EMSのプロパティ
-
ArrayAdapter は、リソース ID が TextView であることが必要です。
-
telnet'が内部コマンドまたは外部コマンドとして認識されない 解決方法
-
エラー:未宣言の識別子(AS)の使用
-
Androidで、onTouchEventでダブルクリックを実装し、ダブルクリックイベントとして判定する方法
-
問題 ---- Android ---- ActivityManager: Error: アクティビティクラス{xx/xx.MainActivity}が存在しない
-
アンドロイドリストビュー
-
アンドロイドシェイプ、グラデーション、角丸、ボーダーラインの設定
-
アプリの実行エラー。ターゲットデバイスが見つからない問題
-
Android TextViewは、テキスト内容が表示省略記号を超えているかどうかを判断する