2016-08-25 12 views
0

RecyclerViewの内部にあるとき、私の問題は基本的にCardViewの画像を見ることができません。カードビューの画像がRecyclerViewに表示されない

私はこのカードをアプリの他の部分で使用しても問題はないことに注意してください。また、カードXMLには、アニメーションに関連しているため、関連性のない部分もありますそれをクリックしてください。

EDIT

は、私は同じコードを試してみましたが、 onCreateViewHolderにだけ画像を含む別の.xmlファイルを膨張させ、それが完全に働いた...だから問題は画像と説明を示していない card_layout.xmlに狭くなっています。私がやろうとしている何

はRecyclerViewの内側に表示され、このカードである: enter image description here

私は最終的に得るか何これです: enter image description here

一般的に、私は別のレイアウトマネージャを使用しています、しかし、わかりやすくするために標準のLinearLayoutManagerを使ってコードをアップロードしていますが、この問題のために重要でないいくつかの関数を空にしました:

フラグメント

あなたが好きそれを使用、 onBindViewHolder方法で行に結合見解ではありません
public class FavoritesFragment extends Fragment { 

    private static final String TAG = "FavoritesFragment"; 

    private Context mContext; 
    private RecyclerView mRecyclerView; 
    private FavoritesAdapter mFavoritesAdapter; 

    private ArrayList<String> testData; 


    public FavoritesFragment() { 
     // Required empty public constructor 
    } 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     View layout = inflater.inflate(R.layout.fragment_favorites, container, false); 

     mContext = getContext(); 

     testData = new ArrayList<>(); 
     testData.add("0"); 
     testData.add("1"); 
     testData.add("2"); 
     testData.add("3"); 
     testData.add("4"); 

     initRecyclerView(layout, testData); 

     return layout; 
    } 



    private void initRecyclerView(View layout, ArrayList<String> testData) { 

     mRecyclerView = (RecyclerView)layout.findViewById(R.id.recyclerViewFavorites); 
     mRecyclerView.setLayoutManager(new LinearLayoutManager(mContext)); 
     mRecyclerView.setHasFixedSize(true); 
     mRecyclerView.setAdapter(new FavoritesAdapter(testData, mContext)); 
     mRecyclerView.addOnScrollListener(new CenterScrollListener()); 
    } 

    private class FavoritesAdapter extends RecyclerView.Adapter<FavoritesAdapter.ViewHolder> { 

     private List<String> data; 
     private Context mContext; 

     // ViewHolder to hold the card 
     public class ViewHolder extends RecyclerView.ViewHolder { 

      private View mContainer; 
      private ImageView mItemImage; 
      private TextView mDescription; 
      private TextView mPrice; 
      private TextView mShippingDate; 

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

       mContainer = cardView.findViewById(R.id.card_container); 
       mItemImage = (ImageView)cardView.findViewById(R.id.card_item_image); 
       mDescription = (TextView)cardView.findViewById(R.id.card_description); 
       mPrice = (TextView)cardView.findViewById(R.id.card_description); 
       mShippingDate = (TextView)cardView.findViewById(R.id.card_shipping); 
      } 
     } 

     public FavoritesAdapter(List<String> data, Context context) { 
      mContext = context; 
      this.data = data; 
     } 

     @Override 
     public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
      View view = LayoutInflater.from(mContext).inflate(R.layout.card_layout, parent, false); 

      return new ViewHolder(view); 
     } 

     @Override 
     public void onBindViewHolder(ViewHolder holder, int position) { 

     } 

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


    } 

} 

fragment_favorites.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.panasonixx.asosplus.FavoritesFragment"> 

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

</FrameLayout> 

card_layout.xml

<android.support.v7.widget.CardView xmlns:cardview="http://schemas.android.com/apk/res-auto" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/card_container" 
    cardview:cardCornerRadius="2dp" 
    cardview:cardElevation="4dp" 
    cardview:cardUseCompatPadding="true"> 

    <RelativeLayout 
     android:id="@+id/relativeLayout" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 

     <FrameLayout 
      android:id="@+id/frameLayout" 
      android:layout_width="wrap_content" 
      android:layout_height="match_parent" 
      android:layout_alignParentBottom="false" 
      android:layout_alignParentTop="true" 
      android:layout_alignParentEnd="false" 
      android:layout_alignParentStart="false" 
      android:layout_above="@+id/card_description"> 

      <LinearLayout 
       android:id="@+id/linearView" 
       android:layout_width="match_parent" 
       android:layout_height="0dp" 
       android:background="@android:color/holo_purple" 
       android:gravity="center_vertical" 
       android:orientation="vertical" 
       android:visibility="gone"> 

       <LinearLayout 
        android:id="@+id/layoutButtons" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_gravity="center_horizontal" 
        android:orientation="vertical" 
        android:visibility="gone"> 

        <Button 
         style="@style/Widget.AppCompat.Button.Colored" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_marginBottom="@dimen/activity_vertical_margin" 
         android:text="@string/card_reveal_buy" /> 

        <Button 
         style="@style/Widget.AppCompat.Button.Colored" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_marginBottom="@dimen/activity_vertical_margin" 
         android:text="@string/card_reveal_share" /> 

        <Button 
         style="@style/Widget.AppCompat.Button.Colored" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="@string/card_reveal_favorite" /> 


       </LinearLayout> 

      </LinearLayout> 

      <ImageView 
       android:id="@+id/card_item_image" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:adjustViewBounds="true" 
       android:contentDescription="@string/image" 
       android:src="@drawable/test_image" 
       android:scaleType="centerCrop" 
       android:layout_gravity="center_horizontal|top" /> 

     </FrameLayout> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textAppearance="?android:attr/textAppearanceLarge" 
      android:text="@string/price" 
      android:id="@+id/card_price" 
      android:layout_alignParentBottom="true" 
      android:layout_alignParentStart="true" 
      android:layout_margin="2dp" /> 

     <TextView 
      android:layout_width="80dp" 
      android:layout_height="wrap_content" 
      android:textAppearance="?android:attr/textAppearanceLarge" 
      android:text="@string/shipping" 
      android:id="@+id/card_shipping" 
      android:textAlignment="viewEnd" 
      android:layout_alignTop="@+id/card_price" 
      android:layout_alignParentEnd="true" 
      android:layout_marginLeft="2dp" 
      android:layout_marginRight="2dp" 
      android:layout_marginTop="2dp" 
      android:layout_marginBottom="2dp" /> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textAppearance="?android:attr/textAppearanceSmall" 
      android:text="@string/desc" 
      android:id="@+id/card_description" 
      android:textAlignment="center" 
      android:layout_above="@+id/card_price" 
      android:layout_alignParentStart="true" 
      android:layout_alignEnd="@+id/card_shipping" 
      android:layout_marginBottom="8dp" /> 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:contentDescription="@string/card_image_description" 
      android:id="@+id/card_shipping_icon" 
      android:src="@drawable/ic_local_shipping" 
      android:layout_alignTop="@+id/card_shipping" 
      android:layout_toStartOf="@+id/card_shipping" /> 


    </RelativeLayout> 


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

答えて

0

@Override 
public void onBindViewHolder(RecyclerView.ViewHolder holder,final int position) { 
    final ViewHolder myHolder = (ViewHolder) holder; 
    Favourite fav=Favourites.get(position); 
    holder.mItemImage.setImageBitmap etc ... 
+0

私はcard_layout.xmlを直接膨らませています - 私はデータを使用していませんが、それは正しい方法ですが、今のところ私はそれが表示されて見たいと思っています – bluesummers

+0

あなたの偽のデータで整数を定義し、イメージのsrcを既に定義しているXMLを膨らませても、R.drawable.yourdrawable' –

+1

は必要ですか? – bluesummers

0

もしIあなたはイメージにイメージをセットするのを忘れていたのではない表示します。 つまりmItemImage.setImageResource(R.drawable.apple);

が起こっていることができ、いくつかのものがありますthis

+1

リソースはすでにXMLファイルに添付されていますが、ViewHolderはこれまでどおり何もしていません。将来の機能のためのテンプレートにすぎません。 – bluesummers

0

を参照してください。

まず、画像のサイズはどのくらいですか?かなり大きい場合は、ビットマップを適切に読み込めない可能性があります。私はアプリの他の部分にロードされている場合、これは問題だとは思わないが、間違いなく考慮する。

レイアウトには奇妙な設定があります。ネストされたレイアウトは、パフォーマンスに影響を与える可能性があるため、できるだけ避けることをお勧めします。あなたは、アニメーションのためにいくつかのものを省いたと言いましたが、どちらかをいくつか変更することを強くお勧めします。レイアウトがどのように見えているのかを完全に把握できれば、これを微調整することができます。

<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:cardview="http://schemas.android.com/apk/res-auto" 
android:id="@+id/card_container" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
cardview:cardCornerRadius="2dp" 
cardview:cardElevation="4dp" 
cardview:cardUseCompatPadding="true"> 

<RelativeLayout 
    android:id="@+id/relativeLayout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <LinearLayout 
     android:id="@+id/layoutButtons" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal" 
     android:orientation="vertical" 
     android:visibility="gone"> 

     <Button 
      style="@style/Widget.AppCompat.Button.Colored" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="@dimen/activity_vertical_margin" 
      android:text="buy" /> 

     <Button 
      style="@style/Widget.AppCompat.Button.Colored" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginBottom="@dimen/activity_vertical_margin" 
      android:text="share" /> 

     <Button 
      style="@style/Widget.AppCompat.Button.Colored" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="reveal" /> 

    </LinearLayout> 

    <ImageView 
     android:id="@+id/card_item_image" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal|top" 
     android:adjustViewBounds="true" 
     android:contentDescription="image" 
     android:scaleType="centerCrop" 
     android:layout_above="@+id/card_price" 
     android:src="@drawable/ic_dashboard_black_24dp" /> 

    <TextView 
     android:id="@+id/card_price" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentStart="true" 
     android:layout_margin="2dp" 
     android:text="price" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

    <TextView 
     android:id="@+id/card_shipping" 
     android:layout_width="80dp" 
     android:layout_height="wrap_content" 
     android:layout_alignParentEnd="true" 
     android:layout_alignTop="@+id/card_price" 
     android:layout_marginBottom="2dp" 
     android:layout_marginLeft="2dp" 
     android:layout_marginRight="2dp" 
     android:layout_marginTop="2dp" 
     android:text="shipping" 
     android:textAlignment="viewEnd" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 

    <TextView 
     android:id="@+id/card_description" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@+id/card_price" 
     android:layout_alignEnd="@+id/card_shipping" 
     android:layout_alignParentStart="true" 
     android:layout_marginBottom="8dp" 
     android:text="desc" 
     android:textAlignment="center" 
     android:textAppearance="?android:attr/textAppearanceSmall" /> 

    <ImageView 
     android:id="@+id/card_shipping_icon" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignTop="@+id/card_shipping" 
     android:layout_toStartOf="@+id/card_shipping" 
     android:contentDescription="desc" 
     android:src="@drawable/ic_event_black_24dp" /> 

</RelativeLayout> 

チャンスはある、あなたはボタンが付いたことのLinearLayoutを取り除くことができるはずですが、あなたはそれが行きたかった場所を私は本当に言うことができませんでした。しかし、ここで大まかなアイデアです。

それが役立つかどうか教えてください。

+1

私はここのカードテンプレートhttps://github.com/を使用していますが、 4k3R/material-sharing-cardだからこそ私はネストされたレイアウトが必要です。バックグラウンドをポップするためのものと、表示されるボタンのためのものです – bluesummers

関連する問題