0

私が尋ねる前に、私は英語をうまく話せないので、奇妙な文章があるかもしれません。予めご了承くださいませ。カードビューがrecyclerviewに表示されていません

フラグメント内にリサイクルビューを配置してカードビューを表示しようとしました。ただし、カードビューはまったく表示されません。問題が何であるか教えていただければ幸いです。

Home.java

package com.rudolphriding.giftfriend; 

import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.support.v4.app.Fragment; 
import android.support.v7.widget.LinearLayoutManager; 
import android.support.v7.widget.RecyclerView; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 

import java.util.ArrayList; 
import java.util.List; 

public class Home extends Fragment 
{ 
    private RecyclerView recyclerView; 
    private LinearLayoutManager layoutManager; 
    private RecyclerAdapter adapter; 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) 
    { 
     View hView = inflater.inflate(R.layout.fragment_home, container, false); 

     //recyclerview 
     recyclerView = (RecyclerView)hView.findViewById(R.id.home_recyclerview); 

     initData(); 

     layoutManager = new LinearLayoutManager(getActivity()); 
     layoutManager.setOrientation(LinearLayoutManager.VERTICAL); 

     recyclerView.setHasFixedSize(true); 
     recyclerView.setLayoutManager(layoutManager); 
     recyclerView.setAdapter(adapter); 
     recyclerView.scrollToPosition(0); 



     return hView; 
    } 
/* 
    @Override 
    public void onActivityCreated(@Nullable Bundle savedInstanceState) 
    { 
     super.onActivityCreated(savedInstanceState); 
    } 

    @Override 
    public void onCreate(@Nullable Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     initData(); 
    } 
*/ 

    private void initData() 
    { 
     List<RecyclerItem> items = new ArrayList<>(); 
     RecyclerItem[] item = new RecyclerItem[2]; 
     item[0] = new RecyclerItem(R.drawable.rudingworld_start1, "TEST#1", "SUBTEST#1"); 
     item[1] = new RecyclerItem(R.drawable.rudingworld_start2, "TEST#2", "SUBTEST#2"); 

     for(int i = 0; i < 2; i++) 
     { 
      items.add(item[i]); 
     } 
    } 
} 

RecyclerAdapter.java

package com.rudolphriding.giftfriend; 

import android.annotation.TargetApi; 
import android.content.Context; 
import android.graphics.drawable.Drawable; 
import android.os.Build; 
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.Button; 
import android.widget.ImageView; 
import android.widget.TextView; 
import android.widget.Toast; 

import java.util.List; 

public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> 
{ 
    Context context; 
    List<RecyclerItem> items; 
    int itemLayout; 

    public RecyclerAdapter(Context context, List<RecyclerItem> items, int itemLayout) 
    { 
     this.context = context; 
     this.items = items; 
     this.itemLayout = itemLayout; 
    } 

    @Override 
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) 
    { 
     View v= LayoutInflater.from(parent.getContext()).inflate(R.layout.item_trend_cardview, parent, false); 
     return new ViewHolder(v); 
    } 

    //@TargetApi(Build.VERSION_CODES.N) 
    @Override 
    public void onBindViewHolder(ViewHolder holder, int position) 
    { 
     final RecyclerItem item = items.get(position); 

     holder.image.setImageResource(item.getBackground()); 
     holder.title.setText(item.getTitle()); 
     holder.subtitle.setText(item.getSubtitle()); 

     holder.cardview.setOnClickListener(new View.OnClickListener() 
       { 
        @Override 
        public void onClick(View v) 
        { 
        Toast.makeText(context,item.getTitle(),Toast.LENGTH_SHORT).show(); 
        } 
       } 
       ); 
    } 

    @Override 
    public int getItemCount() { return this.items.size(); } 

    public class ViewHolder extends RecyclerView.ViewHolder { 
     ImageView image; 
     TextView title; 
     TextView subtitle; 
     CardView cardview; 

     public ViewHolder(View itemView) { 
      super(itemView); 

      image = (ImageView)itemView.findViewById(R.id.cardview_image_title); 
      title = (TextView)itemView.findViewById(R.id.cardview_text_title); 
      subtitle = (TextView)itemView.findViewById(R.id.cardview_text_subtitle) ; 
      cardview = (CardView)itemView.findViewById(R.id.cardview); 
     } 
    } 
} 

*は差注釈を付けたりしませ@TargetApi

RecyclerItem.java

public class RecyclerItem 
{ 
    int background; 
    String title; 
    String subtitle; 


    public int getBackground() { return this.background; } 

    public String getTitle() { return title; } 

    public String getSubtitle() { return subtitle; } 



    public RecyclerItem(int background, String title, String subtitle) 
    { 
     this.background = background; 
     this.title = title; 
     this.subtitle = subtitle; 
    } 
} 

fragmはありませんでしたent_home.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:card_view="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <com.rudolphriding.giftfriend.SquareCardView 
     android:id="@+id/cardview" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:elevation="2dp"> 

     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 

      <ImageView 
       android:id="@+id/cardview_image_title" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:background="@drawable/rudingworld_start1"/> 


      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:background="#80000000" 
       android:orientation="vertical" 
       android:layout_alignParentBottom="true" 
       android:layout_alignParentLeft="true" 
       android:layout_alignParentStart="true"> 

       <LinearLayout 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:orientation="vertical" 
        android:padding="16dp"> 

        <TextView 
         android:id="@+id/cardview_text_title" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:paddingBottom="8dp" 
         android:paddingTop="8dp" 
         android:text="Title goes here" 
         android:textColor="#FFFFFF" 
         android:textSize="24sp" 
         android:textStyle="bold"/> 

        <TextView 
         android:id="@+id/cardview_text_subtitle" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:text="Subtitle here" 
         android:textColor="#FFFFFF" 
         android:textSize="14sp"/> 

       </LinearLayout> 


       <!--LinearLayout 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:padding="8dp"> 

        <Button 
         android:id="@+id/cardview_button_01" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:paddingRight="8dp" 
         android:background="#00000000" 
         android:text="Action1" 
         android:textColor="#FFFFFF"/> 

        <Button 
         android:id="@+id/cardview_button_02" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:background="#00000000" 
         android:text="Action2" 
         android:textColor="#FFFFFF"/> 


       </LinearLayout--> 

      </LinearLayout> 
     </RelativeLayout> 




    </com.rudolphriding.giftfriend.SquareCardView> 


</RelativeLayout> 

item_trend_cardview.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:orientation="vertical" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent"> 

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/home_recyclerview" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 


    </android.support.v7.widget.RecyclerView> 

</RelativeLayout> 

*カードビューで正方形の画像を置くためにカスタマイズされたイメージビューがあります。

*カードビューに表示する方法がわからないため、注釈も付けました。

package com.rudolphriding.giftfriend; 

import android.content.Context; 
import android.util.AttributeSet; 
import android.widget.ImageView; 

public class SquareImageView extends android.support.v7.widget.AppCompatImageView { 

    public SquareImageView(Context context) { 
     super(context); 
    } 

    public SquareImageView(Context context, AttributeSet attrs) { super(context, attrs); } 

    public SquareImageView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } 

    @Override 
    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) 
    { 
     super.onMeasure(widthMeasureSpec, widthMeasureSpec); 
     int width = MeasureSpec.getSize(widthMeasureSpec); 
     int height = MeasureSpec.getSize(heightMeasureSpec); 
     int size = width > height ? height : width; 
     setMeasuredDimension(size, size); // make it square 
    } 

} 

SquareImageView.javaは日の多くを過ごしたが、私はまだ間違っているのか分かりません。どんな提案も大歓迎です。

+0

生成された場合は、エラー/警告ログも投稿してください。どのようなエラーや警告が発生するのかを知ることは非常に重要です。 –

+0

アダプタにデータを割り当てていないようです。 'initData()'でそれらを生成し、 'items'という配列に入れますが、この配列では何もしません。アダプタにアイテムを割り当てたいと思うかもしれません。また、アダプタを実際に作成することもないようです。アダプター(この時点ではnull)をリサイクラー・ビューに割り当てます。 – fjc

+0

@SnehPandyaエラーメッセージはありませんでした。ありがとうございました!私は次の質問を参照します。 – Jihye

答えて

0

アダプタを作成していません。これを試してください:

private void initData() 
    { 
     List<RecyclerItem> items = new ArrayList<>(); 
     RecyclerItem[] item = new RecyclerItem[2]; 
     item[0] = new RecyclerItem(R.drawable.rudingworld_start1, "TEST#1", "SUBTEST#1"); 
     item[1] = new RecyclerItem(R.drawable.rudingworld_start2, "TEST#2", "SUBTEST#2"); 

     for(int i = 0; i < 2; i++) 
     { 
      items.add(item[i]); 
     } 
     adapter= new RecyclerAdapter(getActivity(), items, 
      R.layout.item_trend_cardview); 
    } 
+0

親切な答えをありがとう!あなたが私に言った方法を適用しようとしましたが、それでも動作しません。私はもう一度やり直します。;( – Jihye

+1

あなたのコードの残りの部分は大丈夫でしょうか、おそらくあなたの問題がアクティビティにあります、あなたのフラグメントを正しく追加していますか?フラグメントが表示されていますか? – Pablo

+0

私の考えはまさにあなたがブレークポイント –

0

私は、アダプタを初期化し、生成されたアイテムを割り当てる必要があります。今のところ、アダプタは決して初期化されず、ちょうどnullのままです。

可能溶液:

private void initData() 
    { 
     // ... 
     this.adapter = new RecyclerAdapter(getActivity(), items, R.layout.item_trend_cardview); 
    } 

更新:ではなく例示的な0の前に実際のレイアウトIDとしてR.layout.item_trend_cardviewしました。

+0

あなたの返信ありがとうございます。まだ修正されていません。 – Jihye

関連する問題