2016-07-12 17 views
1

私はナッツを運転している問題があります。基本的には、カードビューを表示するシンプルなRecyclerViewです。私はすでにチェックアウトしたたくさんの投稿があります。ここで(card view not showing up)に説明したように、私はここに示されているように(RecyclerView Not Displaying Any CardView Items)のLayoutManagerを割り当て、IはgetItemCountメソッドを実装しており、私は次のバージョン(変更バージョンはここRecyclerView of cards not showing anything示唆された)に変更:カードビューはRecyclerViewに表示されません

compile 'com.android.support:support-v4:24.0.0' 
compile 'com.android.support:cardview-v7:24.0.0' 
compile 'com.android.support:recyclerview-v7:24.0.0' 

Iもここに示すようにnotifyDataSetChanged()を実行しました(RecyclerView Not Displaying Any CardView Items)。しかし、何も私のためにそれを修正した。

Iは、次のコード(のみ関連セクション、getDummyData 1つのダミーデータのリストを返す)を有する活性を有する:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    DatabaseHelper databaseHelper = new DatabaseHelper(getApplicationContext()); 

    setContentView(R.layout.activity_overview); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    RecyclerView rv = (RecyclerView) findViewById(R.id.rv); 
    rv.setHasFixedSize(true); 
    LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this); 
    linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); 
    rv.setLayoutManager(linearLayoutManager); 

    RVAdapter adapter = new RVAdapter(getDummyData()); 
    rv.setAdapter(adapter); 
    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
        .setAction("Action", null).show(); 
     } 
    }); 
    adapter.notifyDataSetChanged(); 

} 


public class RVAdapter extends RecyclerView.Adapter<RVAdapter.DocumentViewHolder> { 

    List<Document> DocumentList; 

    public RVAdapter(List<Document> Documents) { 
     this.DocumentList = Documents; 
    } 

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

    @Override 
    public void onBindViewHolder(DocumentViewHolder DocumentViewHolder, int i) { 
     DocumentViewHolder.Date.setText(DocumentList.get(i).getCreatedFormatted()); 
     DocumentViewHolder.participants.setText(DocumentList.get(i).getParticipants(getApplicationContext())); 
     DocumentViewHolder.counterOfItems.setText(DocumentList.get(i).getcounterOfItems(getApplicationContext()) + StringUtils.EMPTY); 
    } 

    @Override 
    public void onAttachedToRecyclerView(RecyclerView recyclerView) { 
     super.onAttachedToRecyclerView(recyclerView); 
    } 

    @Override 
    public int getItemCount() { 

     //return DocumentList.size(); 
    return 1; 
    } 

    public class DocumentViewHolder extends RecyclerView.ViewHolder { 
     TextView Date; 
     TextView participants; 
     TextView ideasPreview; 
     TextView counterOfItems; 
     ImageView Photo; 

     public DocumentViewHolder(View itemView) { 
      super(itemView); 
      Date = (TextView) itemView.findViewById(R.id._date); 
      participants = (TextView) itemView.findViewById(R.id.participants); 
      ideasPreview = (TextView) itemView.findViewById(R.id.ideas_preview); 
      counterOfItems = (TextView) itemView.findViewById(R.id.counter_of_items); 
      Photo = (ImageView) itemView.findViewById(R.id._photo); 
     } 
    } 


} 

およびIはDocument_item有する - XML:

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

<android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto" 
    android:id="@+id/card_view" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    card_view:cardCornerRadius="@dimen/_card_corner"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal"> 

     <ImageView 
      android:id="@+id/_photo" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.25" /> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:gravity="center_horizontal" 
      android:orientation="vertical" 
      android:paddingBottom="@dimen/activity_vertical_margin" 
      android:paddingEnd="@dimen/activity_horizontal_margin" 
      android:paddingStart="@dimen/activity_horizontal_margin" 
      android:paddingTop="@dimen/activity_vertical_margin"> 

      <TextView 
       android:id="@+id/_date" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:text="21st June 2016" /> 

      <TextView 
       android:id="@+id/participants" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:text="Thomas, Christian and Johann" /> 

      <TextView 
       android:id="@+id/counter_of_items" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:text="Thomas, Christian and Johann" /> 

      <TextView 
       android:id="@+id/ideas_preview" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:text="Hello, Test, Test, Test" /> 

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

をアクティビティのXMLは次のようになります。

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout  
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fitsSystemWindows="true" 
tools:context="com.chmaurer.idea.OverviewActivity"> 

<android.support.design.widget.AppBarLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/AppTheme.AppBarOverlay"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="?attr/colorPrimary" 
     app:popupTheme="@style/AppTheme.PopupOverlay" /> 

</android.support.design.widget.AppBarLayout> 

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

<android.support.design.widget.FloatingActionButton 
    android:id="@+id/fab" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="bottom|end" 
    android:layout_margin="@dimen/fab_margin" 
    android:src="@drawable/ic_playlist_add_white_24dp" /> 

</android.support.design.widget.CoordinatorLayout> 

コードがコンパイルされ、実行されていますカードは表示されません。では(Javaコードで)あなたは、縦向きでRecyclerViewを使用している...

答えて

1

、問題はレイアウトファイルである:document_item.xml

<LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal"> 

     <ImageView 
      android:id="@+id/_photo" 
      android:layout_width="wrap_content" -->mistake 
      android:layout_height="wrap_content" 
      android:layout_weight="0.25" /> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" -->mistake 
      android:gravity="center_horizontal" 
      android:orientation="vertical" 
      ... 

LinearLayoutは、その高さを取得します親から(最初のLinearLayout)、最初の子はその唯一の子からその高さを得ます:drawableを設定しないと、2番目のレイアウトの高さはゼロになります! )、あなたは)(onBindViewHolder方法やレイアウトxmlファイルにImageViewためdrawableを設定した場合、それはおそらくあなたが"wrap_content"android:layout_widthを設定すると、実際にあなたがlayout_weightを無視している。また、TextView項目の一部をトリミング。

したがって、このような編集レイアウトファイル:このような

app:layout_behavior="@string/appbar_scrolling_view_behavior" 

<android.support.v7.widget.RecyclerView 
    android:id="@+id/rv" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior"> 
</android.support.v7.widget.RecyclerView> 

が、それはあなたを助けることを願っています

  ... 
      <ImageView 
      android:id="@+id/_photo" 
      android:layout_width="0dp" 
      android:layout_gravity="center_vertical" 
      android:layout_height="wrap_content" 
      android:layout_weight="0.25" /> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      ... 
+0

ご返信ありがとうございます - それはまさにエラーでした! – Christian

0

を私は今、自分のためにいくつかの時間を試してみましたが、それは間違いなく私がヒントを持って喜んでいるだろうポイントでありますあなたはWrap_Content

にレイアウトの高さを設定している活動のXMLは、カードのレイアウトはまた、彼らはそのように動作しませんmatch_parent

の高さを持って、私はこの

に3日間失われた修正高さを与えるようにしてくださいあなたのカードレイアウトに、t他のレイアウトのESTも他の変更、それはあなたのために

幸運に動作しますあなたのコードは大丈夫です

0

はちょうどあなたのrecyclerview内のこの行を追加した後にしてみてください。

関連する問題