물어보기 전에 영어가 잘 못되어 이상한 문장이 나옵니다. 미리 양해 바랍니다.카드 뷰가 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은 일을 많이 소비하지만, 아직 잘못 알고하지 않습니다. 어떤 제안이라도 환영합니다.
생성 된 경우 오류/경고 로그도 게시하십시오. 어떤 오류 또는 경고가 발생했는지 아는 것은 매우 중요합니다. –
어댑터에 데이터를 할당하지 않는 것처럼 보입니다. 당신은'initData()'에서 그것들을 생성하고'items'라는 배열에 넣어 둡니다. 그러나이 배열에는 아무 것도하지 않습니다. 어댑터에 항목을 할당하려고합니다. 또한 실제로 어댑터를 만들지 않은 것처럼 보입니다. 어댑터 (이 시점에서 null 임)를 리사이클 러 뷰에 지정하면됩니다. – fjc
@SnehPandya 오류 메시지가 없습니다. 고맙습니다! 다음 질문을 참조하겠습니다. – Jihye