RecycleView不显示数据 [英] RecycleView do not displaying the data

查看:65
本文介绍了RecycleView不显示数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个非常受欢迎的问题-为什么数据没有显示在RecycleView中.

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

那是我的适配器:

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

}

那是我的观点:

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

设置适配器后,getItemCount返回项的数量-因此不为null.

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

RecycleView布局:

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?

推荐答案

我已经解决了该问题.问题是我在NestedScrollView里面有RecycleView

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

这篇文章中的答案对我有很大帮助: 如何在NestedScrollView中使用RecyclerView?

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

这篇关于RecycleView不显示数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆