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

카드보기에서 정사각형 이미지를 넣어 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> 

<?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> 

*가 사용자 정의됩니다 이미지보기를 ent_home.xml.

* 카드보기에 표시하는 방법을 모르므로 버튼에 주석을 달았습니다.

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

내 생각에 정확히 말하면, 중단 점이있는 디버그 모드에서 코드를 실행하고 싶을 수 있습니다 홈 조각의 onCreateView()에서 프로그램이 도착하는지 확인하십시오. –

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