2017-02-27 12 views
0

Recyclerviewはフルスクリーンで表示されません。以下はレイアウトファイルと私が書いたコードです。実行後、下の図のように内容が表示されます。高さはハイライト部分のみです。私はその内容をフルスクリーンにしたい。 残りの内容はスクロール可能なこの強調表示された領域内にあります。私は、コンテンツをフルスクリーンで表示したい。どんな助けも役に立つでしょう。Recyclerviewはフルスクリーンで表示されません

enter image description here

レイアウトファイル:

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

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/recycler_view" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:scrollbars="vertical" /> 

    <RelativeLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:focusable="true" 
     android:paddingLeft="16dp" 
     android:paddingRight="16dp" 
     android:paddingTop="10dp" 
     android:paddingBottom="10dp" 
     android:clickable="true"> 

     <TextView 
      android:id="@+id/title" 
      android:textSize="16dp" 
      android:textStyle="bold" 
      android:layout_alignParentTop="true" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

     <TextView 
      android:id="@+id/genre" 
      android:layout_below="@id/title" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

     <TextView 
      android:id="@+id/year" 
      android:layout_width="wrap_content" 
      android:layout_alignParentRight="true" 
      android:layout_height="wrap_content" /> 

    </RelativeLayout> 
</LinearLayout> 
  • コード:

    輸入android.support.v7.widget.RecyclerView。 import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import java.util.List;

    パブリッククラスsetSearchDataはRecyclerView.Adapterを拡張{

    private List<SearchDisplayContents> moviesList; 
    
    public class MyViewHolder extends RecyclerView.ViewHolder { 
        public TextView title, year, genre; 
    
        public MyViewHolder(View view) { 
         super(view); 
         title = (TextView) view.findViewById(R.id.title); 
         genre = (TextView) view.findViewById(R.id.genre); 
         year = (TextView) view.findViewById(R.id.year); 
        } 
    } 
    
    @Override 
    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
        View itemView = LayoutInflater.from(parent.getContext()) 
          .inflate(R.layout.activity_searchresults, parent, false); 
    
        return new MyViewHolder(itemView); 
    } 
    
    @Override 
    public void onBindViewHolder(MyViewHolder holder, int position) { 
        SearchDisplayContents movie = moviesList.get(position); 
        holder.title.setText(movie.getTitle()); 
        holder.genre.setText(movie.getGenre()); 
        holder.year.setText(movie.getYear()); 
    } 
    
    @Override 
    public int getItemCount() { 
        return moviesList.size(); 
    } 
    

    }

    呼び出す機能コード:

    リストmovieList =新しいArrayListを<>(); RecyclerView recyclerView =(RecyclerView)findViewById(R.id.recycler_view);

    setSearchData mAdapter = new setSearchData(movieList); 
    RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext()); 
    recyclerView.setLayoutManager(mLayoutManager); 
    recyclerView.setItemAnimator(new DefaultItemAnimator()); 
    recyclerView.setAdapter(mAdapter); 
    
    SearchDisplayContents movie = new SearchDisplayContents("Mad Max: Fury Road", "Action & Adventure", "2015"); 
    movieList.add(movie); 
    
    movie = new SearchDisplayContents("Inside Out", "Animation, Kids & Family", "2015"); 
    movieList.add(movie); 
    
    mAdapter.notifyDataSetChanged(); 
    
+0

全体のレイアウトを表示してくださいファイル – xklakoux

+0

レイアウトファイルが完成しました。 – Nikhil

+0

を確認してください。activity_searchresults.xml – xklakoux

答えて

1

あなたはviewholderのために別のレイアウトを使用する必要があります。あなたがそこに持っているRelativeLayoutを取り出し、別のXMLファイルに入れてから、onCreateViewHolderに渡します。

+0

match_parentであれば画面もフルに表示されますが、内容は表示されません – Nikhil

0

ビューホルダーに異なるレイアウトを使用する必要があります。あなたがそこに持っているRelativeLayoutを取り出し、別のXMLファイルに入れてから、onCreateViewHolderに渡します。

+0

申し訳ありませんが、私はあなたの答えを誤って編集して元に戻せませんでした。誰かがそれを受け入れた – xklakoux

0

あなたのコードを見ると、プレビューのスクリーンショットは、静的に定義されたRelativeLayout内のものと同じように見えます。

あなたのアプローチに問題があります。 RecyclerView.AdapterのCellViewHolderと同じRelativeLayout(RecylerViewと同じxml階層内)を参照しています。私のアプローチは、セルのビューホルダーのための別個のXMLレイアウトを作成することです。

、それは非常に詳細で、このガイドに従ってください: https://guides.codepath.com/android/using-the-recyclerview

0

上記のコードは、作業がリストに内容のため

main_layout.xml

をRecycleviewための1つを意味する別のレイアウトを使用し、他の何かを持っています
<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 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.RecyclerView 
    android:id="@+id/uslist" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_marginTop="@dimen/_49sdp" 
    android:divider="@android:color/transparent" /> 
</RelativeLayout> 

list_content。XML

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:focusable="true" 
    android:paddingLeft="16dp" 
    android:paddingRight="16dp" 
    android:paddingTop="10dp" 
    android:paddingBottom="10dp" 
    android:clickable="true"> 

    <TextView 
     android:id="@+id/title" 
     android:textSize="16dp" 
     android:textStyle="bold" 
     android:layout_alignParentTop="true" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

    <TextView 
     android:id="@+id/genre" 
     android:layout_below="@id/title" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" /> 

    <TextView 
     android:id="@+id/year" 
     android:layout_width="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_height="wrap_content" /> 

</RelativeLayout> 

Adapter.java

public class yourAdapter extends RecyclerView.Adapter<yourAdapter .SimpleViewHolder> { 


ArrayList<UsageRPDetails> mylist; 
private Context mContext; 

public yourAdapter (Context context, ArrayList<yourArray or model> checklist) { 
    mContext = context; 
    mylist = checklist; 
} 

@Override 
public yourAdapter .SimpleViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.list_content, parent, false); 
    return new yourAdapter .SimpleViewHolder(view); 
} 

@Override 
public void onBindViewHolder(final yourAdapter .SimpleViewHolder holder, final int position) { 
    holder.title.setText(); 
    holder.year.setText(); 
    holder.genre.setText(); 


} 

@Override 
public long getItemId(int i) { 
    return 0; 
} 

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

@Override 
public int getItemViewType(int i) { 
    return 0; 
} 

public static class SimpleViewHolder extends RecyclerView.ViewHolder { 
    @Bind(R.id.title) 
    TextView title; 
    @Bind(R.id.genre) 
    TextView genre; 
@Bind(R.id.year) 
    TextView year; 


    public SimpleViewHolder(View itemView) { 
     super(itemView); 
     title= (TextView) itemView.findViewById(R.id.title); 
     genre= (TextView) itemView.findViewById(R.id.genre); 
     genre= (TextView) itemView.findViewById(R.id.genre); 


    } 
} 

}

はまた、このアダプタクラスを呼び出すアクティビティのためのJavaファイルを作成し、この活動にrecycleviewを呼び出す

関連する問題