0

I have very popular question - why the data not showing in the RecycleView.

That is my Adapter:

public class CommentsAdapter extends RecyclerView.Adapter<CommentsAdapter.ViewHolder>  {

private static final String TAG = "CommentsAdapter";
public ImageView mThumbView;
private List<PostComment> postCommentList;

public CommentsAdapter(List<PostComment> postCommentList) {
    this.postCommentList = postCommentList;
}
@Override
public CommentsAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.post_comment_item, parent, false);
    return new ViewHolder(v);
}

@Override
public void onBindViewHolder(CommentsAdapter.ViewHolder holder, int position) {
    PostComment record = postCommentList.get(position);
    holder.mAuthorTextView.setText(record.getUser().getFull_name());
    holder.mDateTextView.setText(record.getCreated_at());
    holder.mTextTextView.setText(record.getText());
}

@Override
public int getItemCount() {
    Log.i(TAG + " comments size", Integer.toString(postCommentList.size()));
    return postCommentList.size();
}

public void addItems(List<PostComment> postCommentList) {
    this.postCommentList.addAll(postCommentList);
}

public class ViewHolder  extends RecyclerView.ViewHolder {
    // each data item is just a string in this case
    public TextView mAuthorTextView;
    public TextView mDateTextView;
    public TextView mTextTextView;
    public ViewHolder(View v) {
        super(v);
        mAuthorTextView = (TextView) itemView.findViewById(R.id.comment_author);
        mDateTextView = (TextView) itemView.findViewById(R.id.comment_date);
        mTextTextView = (TextView) itemView.findViewById(R.id.comment_text);
    }
}

}

That is my view:

<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/container"
....>

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/white"
    android:paddingBottom="16dp"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:paddingTop="16dp">
    <ImageView
        android:id="@+id/comment_image"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:scaleType="centerInside"
        android:src="@drawable/cat"/>

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/middleLayout"
        android:layout_toRightOf="@+id/comment_image"
        android:layout_marginTop="8dp">


        <TextView
            android:id="@+id/comment_author"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:singleLine="true"
            android:text="Dark Plastic"
            android:textColor="?attr/colorPrimary"
            android:textSize="14dp" />



        <TextView
            android:id="@+id/comment_date"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="8dp"
            android:layout_toRightOf="@+id/comment_author"
            android:text="21 minutes"
            android:textSize="14dp" />


    </RelativeLayout>

    <TextView
        android:id="@+id/comment_text"
        android:layout_width="wrap_content"
        android:layout_toRightOf="@+id/comment_image"
        android:layout_height="wrap_content"
        android:maxLines="3"
        android:layout_marginTop="8dp"
        android:layout_below="@id/middleLayout"
        android:text="sd"
        android:textColor="@android:color/black"
        android:textSize="16dp" />

</RelativeLayout>

<View
    android:id="@+id/divider"
    android:layout_width="match_parent"
    android:layout_height="1dp"
    android:layout_gravity="bottom"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"></View>

That is how I set up the adapter:

  mLayoutManager = new LinearLayoutManager(this);
  mLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
  post_details_comments_list.setLayoutManager(mLayoutManager);
  mCommentListAdapter = new CommentsAdapter(new ArrayList<PostComment>());
  post_details_comments_list.setAdapter(mCommentListAdapter);

After I set up the adapter, I the getItemCount returns the quantity of the items - so that is not null.

RecycleView layout:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

<com.google.android.gms.maps.MapView
    android:id="@+id/post_details_mapview"
    android:layout_width="wrap_content"
    android:layout_height="200dp" />

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
<TextView
    android:id="@+id/post_details_comments_count"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    style="@style/TextLabelStyle"/>

</RelativeLayout>

<android.support.v7.widget.RecyclerView
    android:id="@+id/post_details_comments_list"
    android:layout_width="match_parent"
    android:scrollbars="vertical"
    android:layout_height="wrap_content">
</android.support.v7.widget.RecyclerView>
    <EditText
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/edit_comment"
    android:hint="@string/hint_type_comment"/>

</LinearLayout>

I make the request to the server and here is the callback, where I get the results and set up the adapter:

  @Override
public void onAllPostCommentsCallback(AllComments allComments) {
    Log.i(TAG + " I've the comments", allComments.getPostCommentList().toString());

    mCommentListAdapter.addItems(allComments.getPostCommentList());
    post_details_comments_list.setAdapter(mCommentListAdapter);
    mCommentListAdapter.notifyDataSetChanged();

}

But the list is not displaying. What can be the reason?

Rikki Tikki Tavi
  • 3,089
  • 5
  • 43
  • 81

2 Answers2

0

put null inplace of parent in View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.post_comment_item, parent, false);

inkedTechie
  • 684
  • 5
  • 13
0

I've already solved the issue. The problem was that I had RecycleView inside the NestedScrollView

Answer in this post helped me a lot: How to use RecyclerView inside NestedScrollView?

Community
  • 1
  • 1
Rikki Tikki Tavi
  • 3,089
  • 5
  • 43
  • 81