1

RecyclerViewをいくつか作成して、CardViewとしたいと思います。これについてはThreadonCreateを私のActivity.から始めます。私のサーバーからデータを取得し、これをリストに入れます。それから私はRecyclerView,のためのアダプタを作成しますが、動作しません。ここに私のコードは次のとおりです。Android | RecyclerViewが機能しない

ここで私は、アダプタを作成し、それが内のすべてのCardView Sを埋める必要があります。

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

ここに私のアダプタクラスは、ここで

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); 
    } 
} 

である私の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> 

と私のカードビュー:

<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> 

そして、ここでは2つのエラー:

は、E/RecyclerView:いいえアダプター付属。レイアウトをスキップするE/RecyclerView: レイアウトマネージャが接続されていません。レイアウトをスキップする

しかし、私はどちらもやっていませんか?

+0

? –

+0

レイアウトマネージャを設定していません – EpicPandaForce

答えて

1

を最初にLayoutManagerに設定します。

あなたのコードから:

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); 

希望これはあなたを助ける!! ..あなたは、レイアウトマネージャを設定している

関連する問題