2017-02-27 24 views
0

Recyclerview wird nicht im Vollbildmodus angezeigt. Unten ist die Layout-Datei und der Code, den ich geschrieben habe. Nach der Ausführung wird der Inhalt wie im folgenden Bild angezeigt. Die Höhe ist nur der hervorgehobene Teil. Ich möchte, dass der Inhalt im Vollbildmodus angezeigt wird. I verbleibenden Inhalte sind in diesem markierten Bereich, der scrollbar ist. Ich möchte, dass der Inhalt im Vollbildmodus angezeigt wird. Jede Hilfe wäre hilfreich.Recyclerview wird nicht im Vollbild angezeigt

enter image description here

Layout-Datei:

<?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> 
  • Code:

    Import android.support.v7.widget.RecyclerView; importieren android.view.LayoutInflater; importieren android.view.View; importieren android.view.ViewGroup; importieren android.widget.TextView; importieren java.util.List;

    public class setSearchData erweitert 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(); 
    } 
    

    }

    Aufruf Funktionscode:

    Liste Movielist = new 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

zeigen Sie bitte das gesamte Layout Datei – xklakoux

+0

Die Layout-Datei ist abgeschlossen. Bitte überprüfen Sie – Nikhil

+0

Bitte zeigen Sie uns: activity_searchresults.xml – xklakoux

Antwort

1

sollten Sie verschiedene Layout für Ihre viewholder verwenden. Nehmen Sie das RelativeLayout, das Sie dort haben, schneiden Sie es aus, legen Sie es in eine andere XML-Datei und übergeben Sie es an onCreateViewHolder.

+0

Ich habe das auch versucht, wenn es match_parent ist, wird der Bildschirm vollständig angezeigt, aber es werden keine Inhalte angezeigt. – Nikhil

0

Sie sollten für Ihren Viewholder ein anderes Layout verwenden. Nehmen Sie das RelativeLayout, das Sie dort haben, schneiden Sie es aus, legen Sie es in eine andere XML-Datei und übergeben Sie es an onCreateViewHolder.

+0

Entschuldigung, ich habe deine Antwort versehentlich bearbeitet und konnte sie nicht rückgängig machen. Jemand akzeptierte es, keine Ahnung warum – xklakoux

0

Aus dem Blick auf Ihren Code - es sieht aus wie in der Vorschau Screenshot ist das gleiche wie in dem RelativeLayout, das Sie definiert haben.

Es gibt ein Problem mit Ihrem Ansatz. Sie verweisen auf das RelativeLayout (innerhalb derselben XML-Hierarchie wie Ihr RecylerView) als CellViewHolder im RecyclerView.Adapter. Meine Vorgehensweise besteht darin, ein separates XML-Layout für den Zellen-Viewholder zu erstellen.

diese Anleitung folgt, ist es sehr detailliert: https://guides.codepath.com/android/using-the-recyclerview

0

Die obige Codierung etwas Arbeit verwenden unterschiedliches Layout einen für Recycleview und andere für die Inhalte in der Liste

main_layout.xml

bedeuten hat
<?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); 


    } 
} 

}

auch eine Java-Datei für Activity schreiben, die diesen Adapter Klasse aufruft und rufen Sie die recycleview in dieser Tätigkeit

Verwandte Themen