RecyclerView не отображается в пользовательском интерфейсе

Я получаю данные от API TMDB и отображаю его на экране.

Прямо сейчас, я пытаюсь получить отзывы от этого API.

Все кажется прекрасным, я создал: адаптер, модель, интерфейс, xml и действия, но он не отображает никаких данных.

API работает отлично, я вижу из Android Monitor, что получаю правильные данные.

Кто-нибудь, пожалуйста, помогите.

Bellow - это моя DetailsActivity, где я пытаюсь получить данные:

public class MovieDetailActivity extends AppCompatActivity {
public static final String EXTRA_MOVIE = "EXTRA_MOVIE";
private Movie mMovie;
private Reviews mReviews;
private Genres mGenres;
public ReviewAdapter rAdapter;

ImageView backdrop;
ImageView poster;
TextView title;
TextView description;
TextView releaseDate;
TextView voteAverage;
RecyclerView reviews;
TextView content;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_movie_detail);
    if (getIntent().hasExtra(EXTRA_MOVIE)) {
        mMovie = getIntent().getParcelableExtra(EXTRA_MOVIE);
    } else {
        throw new IllegalArgumentException("Detail activity must receive a movie parcelable");
    }

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    CollapsingToolbarLayout toolbarLayout = (CollapsingToolbarLayout) findViewById(R.id.toolbar_layout);
    toolbarLayout.setTitle(mMovie.getTitle());


    reviews = (RecyclerView) findViewById(R.id.recyclerView2);
    reviews.setLayoutManager(new LinearLayoutManager(this));
    rAdapter = new ReviewAdapter(MovieDetailActivity.this);

    reviews.setAdapter(rAdapter);


    getReviews(mMovie.getId());




    poster = (ImageView) findViewById(R.id.movie_poster);
    String internetUrl = "http://image.tmdb.org/t/p/w500";

    Glide.with(this)
            .load(mMovie.getPoster())
            .into(poster);

    Glide.with(this)
            .load(mMovie.getBackdrop())
            .into(backdrop);
}


private void getReviews(Integer id) {
    RestAdapter.getMovieService().getReviews(id, new Callback<ReviewWraper>() {
        @Override
        public void success(ReviewWraper reviewWraper, Response response) {
            rAdapter.setReviewList(reviewWraper.getResults());
        }

        @Override
        public void failure(RetrofitError error) {
            error.printStackTrace();

        }
    });
}

public static class MovieViewHolder extends RecyclerView.ViewHolder {

    public ImageView reviewPicture;
    public TextView reviewUsername;
    public TextView reviewDate;
    public TextView reviewTime;
    public TextView reviewComment;


    public MovieViewHolder(View itemView) {
        super(itemView);

        reviewPicture = (ImageView) itemView.findViewById(R.id.picture_review);
        reviewUsername = (TextView) itemView.findViewById(R.id.username_review);
        reviewDate = (TextView) itemView.findViewById(R.id.date_review);
        reviewTime = (TextView) itemView.findViewById(R.id.time_review);
        reviewComment = (TextView) itemView.findViewById(R.id.review_comment);



    }
}

Вот мой класс адаптера:

public class ReviewAdapter extends RecyclerView.Adapter<MovieDetailActivity.MovieViewHolder> {

private List<Reviews> rReviewList;
private LayoutInflater rInflater;
private Context rContext;

public ReviewAdapter(Context context) {
    this.rContext = context;
    this.rInflater = LayoutInflater.from(context);
    this.rReviewList = new ArrayList<>();
}


public MovieDetailActivity.MovieViewHolder onCreateViewHolder(ViewGroup parent, final int viewType) {
    // create a new view
    View view = rInflater.inflate(R.layout.row_review, parent, false);
    return new MovieDetailActivity.MovieViewHolder(view);
}

@Override
public void onBindViewHolder(MovieDetailActivity.MovieViewHolder holder, int position) {
    Reviews reviews = rReviewList.get(position);
    Picasso.with(rContext)
            .load(reviews.getUrl())
            .into(holder.reviewPicture);
    holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //Perform click
        }
    });
}


@Override
public int getItemCount() {
    return rReviewList.size();
}

//To update data
public void setReviewList(List<Reviews> reviewsList) {
    this.rReviewList = new ArrayList<>();
    this.rReviewList.addAll(reviewsList);
    notifyDataSetChanged();
}

Bellow - это XML 1:

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



   <ImageView
       android:id="@+id/picture_review"
       android:layout_width="50dp"
       android:layout_height="50dp" />

    <TextView
        android:adjustViewBounds="true"
        android:id="@+id/username_review"
        android:layout_width="40dp"
        android:layout_height="20dp"
        android:width="20dp"
        android:height="20dp"
        android:textColor="#ffffff" />

    <TextView
        android:id="@+id/date_review"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:textColor="#ffffff" />

    <TextView
        android:id="@+id/time_review"
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:textColor="#ffffff" />

    <TextView
        android:id="@+id/review_comment"
        android:layout_width="250dp"
        android:layout_height="250dp"
        android:textColor="#ffffff"
        android:layout_centerVertical="true"
        android:layout_toRightOf="@+id/picture_review"
        android:layout_toEndOf="@+id/picture_review" />

</RelativeLayout>

И XML 2 с RecyclerView

 <?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="com.demo.mtin.mtin.MovieDetailActivity"
    tools:showIn="@layout/activity_movie_detail">

                <android.support.v7.widget.RecyclerView

                    android:id="@+id/recyclerView2"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:textColor="#ffffff" />
0
источник поделиться
2 ответа

Попробуйте указать фиксированную высоту вместо "wrap_content" в вашей строке в корне Xml 1.

0
источник
tools:showIn="@layout/activity_movie_detail">

Если XML 2 должен отображаться в XML 1, XML1 должен иметь это -

<include layout="@layout/XML2"/>

См. Это для получения дополнительной информации. Android-how-to-use-tools-with-include-layout

0
источник

Посмотрите другие вопросы по метке или Задайте вопрос