在我問之前,我可能會有一個奇怪的句子,因爲我的英語說得不好。請事先確認。Cardview沒有顯示在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"
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>
item_trend_cardview.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>
*有自定義圖像視圖把方形圖像的卡片視圖。
*我也註釋了按鈕,因爲我不知道如何讓它們出現在卡片視圖中。
SquareImageView.java
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
}
}
花了很多天,但我不知道什麼是錯呢。歡迎任何建議。
如果生成,還請發佈任何錯誤/警告日誌。知道產生了什麼錯誤或警告是非常重要的。 –
您似乎沒有將數據分配給適配器。你可以在'initData()'中生成它們,把它們放在一個名爲'items'的數組中,但是不要對這個數組做任何事情。您可能想要將這些項目分配給您的適配器。此外,它看起來像你永遠不會創建一個適配器。您只需將適配器(此時爲空)分配給回收站視圖。 – fjc
@SnehPandya沒有錯誤信息。謝謝!我會參考下一個問題。 – Jihye