1

Ich möchte eine RecyclerView mit ein paar CardView s darin erstellen. Dazu starte ich einen Thread im onCreate meines Da bekomme ich die Daten von meinem Server und lege diesen in eine Liste. Dann erstelle ich den Adapter für die RecyclerView, aber es funktioniert nicht. Hier ist mein Code:Android | RecyclerView funktioniert nicht

Hier erstelle ich den Adapter und es sollten alle CardView s ausfüllen:

ListAdapter adapter = new ListAdapter(posts); 
RecyclerView rv = (RecyclerView)findViewById(R.id.post_list); 
rv.setAdapter(adapter); 

Hier ist meine Adapterklasse

public class ListAdapter extends RecyclerView.Adapter<ListAdapter.PostViewHolder> { 

List<Post> posts; 

public ListAdapter(List<Post> posts) { 
    Log.d("ListAdapter", ""); 
    this.posts = posts; 
} 

@Override 
public int getItemCount() { 
    Log.d("getItemCount", ""); 
    return posts.size(); 
} 

@Override 
public PostViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { 
    Log.d("onCreateView", ""); 
    View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.insert_layout, viewGroup, false); 
    PostViewHolder pvh = new PostViewHolder(v); 
    return pvh; 
} 

@Override 
public void onBindViewHolder(PostViewHolder postViewHolder, int i) { 
    Log.d("onBindView", ""); 
    postViewHolder.username.setText(posts.get(i).getUsername()); 
    postViewHolder.text.setText(posts.get(i).getText()); 
    postViewHolder.time.setText(Long.toString(posts.get(i).getTime())); 
    postViewHolder.postPhoto.setImageResource(posts.get(i).returnIMG()); 
} 

@Override 
public void onAttachedToRecyclerView(RecyclerView recyclerView) { 
    Log.d("onAttached", ""); 
    super.onAttachedToRecyclerView(recyclerView); 
} 


public static class PostViewHolder extends RecyclerView.ViewHolder { 
    CardView cv; 
    TextView username; 
    TextView time; 
    TextView text; 
    ImageView postPhoto; 

    PostViewHolder(View itemView) { 
     super(itemView); 
     Log.d("PostViewHolder", ""); 
     cv = (CardView) itemView.findViewById(R.id.cv); 
     username = (TextView) itemView.findViewById(R.id.usernameText); 
     time = (TextView) itemView.findViewById(R.id.timeText); 
     text = (TextView) itemView.findViewById(R.id.textText); 
     postPhoto = (ImageView) itemView.findViewById(R.id.postPhoto); 
    } 
} 

Hier ist meine recyclerview:

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


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

und mein cardview:

<android.support.v7.widget.CardView android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/cv" 
    xmlns:android="http://schemas.android.com/apk/res/android"> 

     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      > 

      <ImageView 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:id="@+id/postPhoto" 
       android:layout_alignParentLeft="true" 
       android:layout_alignParentTop="true" 
       /> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/textText" 
       android:layout_alignParentTop="true" 
       android:textSize="30sp" 
       /> 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/usernameText"/> 
      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:id="@+id/timeText"/> 

     </RelativeLayout> 

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

Und hier die 2 Fehler:

E/RecyclerView: Kein Adapter angebracht ist; Layout überspringen E/RecyclerView: Kein Layout-Manager angeschlossen; Layout überspringen

Aber ich mache beides, oder?

+0

Wo Sie die Layout-Manager Einstellung werden? –

+0

Sie legen keinen Layout-Manager fest – EpicPandaForce

Antwort

1

zuerst LayoutManager einstellen.

aus dem Code:

ListAdapter adapter = new ListAdapter(posts); 
RecyclerView rv = (RecyclerView)findViewById(R.id.post_list); 
rv.setHasFixedSize(true); 

LinearLayoutManager layoutManager = new LinearLayoutManager(this); 
layoutManager.setOrientation(LinearLayoutManager.VERTICAL); 
rv.setLayoutManager(layoutManager); 

rv.setAdapter(adapter); 

hoffe, dies wird Ihnen helfen !! ..

Verwandte Themen