如何使用改造设置路径参数

时间:2018-11-16 17:11:18

标签: java android android-studio android-recyclerview retrofit

如何在通话翻新中获得ID位置 GET https://api.themoviedb.org/3/movie/ {movie_id} / credits?api_key = <>

我需要在loadCast函数中获取发送到服务器的位置ID 并且在MovieService的改造调用中,我需要在积分之前发送位置ID 如果有人能帮助我,我不知道该怎么办,非常感谢<3

 //this my call retrofit server


public interface MovieService {

@GET("popular?" + Common.API_KEY + "&language=en-US")
Call<MoviesList> getPopular(@Query("api_key") String api_key);

@GET( ListMovieAdapter.SELECTED_MOVIE +"/credits?" + Common.API_KEY + 
"&language=en-US")
Call<MovieCast> getCast(
        @Query("api_key") String api_key);



----------------------------------------------------------------
package com.example.android.movie;

/**
* Created by yuyu on 12-Nov-18.
*/

public class MovieDetails extends YouTubeBaseActivity {
Result selectedMovie;
private ArrayList<Cast> cast;
private RecyclerView.LayoutManager mLayoutManager;
private RecyclerView mRecyclerView;
private CastMovieAdapter castMovieAdapter;


private TextView name;
private ImageView imageMovie;
private TextView date;
private TextView rating;
private ArrayList<Result> results;

MovieService mService;

private static final String YT_API_KEY = "###";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.movie_details);

    selectedMovie =     
   getIntent().getParcelableExtra(ListMovieAdapter.SELECTED_MOVIE);


    mRecyclerView = (RecyclerView) findViewById(R.id.cast_recycler);


    mLayoutManager = new LinearLayoutManager(this,         
    LinearLayoutManager.VERTICAL, false);
    mRecyclerView.setLayoutManager(mLayoutManager);

    cast = new ArrayList<>();
    castMovieAdapter = new CastMovieAdapter(cast, MovieDetails.this);
    mRecyclerView.setAdapter(castMovieAdapter);


    results = new ArrayList<>();
    mService = Common.getMovieService();



    loadTriler();
    loadMovies();
   loadCast();

     }

  this function to load movie 
      private void loadMovies() {


    mService.getPopular(Common.API_KEY).enqueue(new Callback<MoviesList>() 
    {

        @Override
        public void onResponse(Call<MoviesList> call, Response<MoviesList>     
     response) {
            results.clear();
            results.addAll(response.body().getResults());


            name = (TextView) findViewById(R.id.name_movie);
            rating = (TextView) findViewById(R.id.rating);
            date = (TextView) findViewById(R.id.date_det);
            imageMovie = (ImageView) findViewById(R.id.imageView);


            date.setText(selectedMovie.getReleaseDate());
            name.setText(selectedMovie.getTitle());


      rating.setText(String.valueOf(selectedMovie.getVoteAverage()));

            final String image = Common.IMAGE_LOAD + 
  selectedMovie.getPosterPath();

            Picasso.with(MovieDetails.this)
                    .load(image)
                    .into(imageMovie);
        }

        @Override
        public void onFailure(Call<MoviesList> call, Throwable t) {
            Log.d("===LoadMovies", "onResponse: " + t);
        }
    });
}





  //i have proplem here in send ID postion

  private void loadCast() {
    mService.getCast( 
  ListMovieAdapter.SELECTED_MOVIE+Common.API_KEY).enqueue(new 
  Callback<MovieCast>() {
        @Override
        public void onResponse(Call<MovieCast> call, final 
  Response<MovieCast> response) {
            cast.clear();
            cast.addAll(response.body().getCast());
            mRecyclerView.getAdapter().notifyDataSetChanged();

        }

        @Override
        public void onFailure(Call<MovieCast> call, Throwable t) {

        }
    });
   }


   }

 package com.example.android.movie.Adapter;


   /**
  * Created by yuyu on 11-Nov-18.
 */

  public class ListMovieAdapter extends 
  RecyclerView.Adapter<ListMovieAdapter.MyViewHolder> {

  private ArrayList<Result> mMovies;

  private Context context;
  public static final String SELECTED_MOVIE = "selected_movie";
  private int lastPosition = -1;

  public ListMovieAdapter(ArrayList<Result> mMovies, Context context) {
    this.mMovies = mMovies;
    this.context = context;
  }

   @Override
  public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    LayoutInflater inflater = LayoutInflater.from(context);
    View view = inflater.inflate(R.layout.list_views, parent, false);
    return new MyViewHolder(view);
  }

   @Override
   public void onBindViewHolder(MyViewHolder holder, int position) {

    //Animation Scroll
    Animation animation = AnimationUtils.loadAnimation(context,
            (position > lastPosition) ? R.anim.up_from_bottom
                    : R.anim.down_from_top);
    holder.itemView.startAnimation(animation);
    lastPosition = position;

    holder.nameMovie.setText(mMovies.get(position).getTitle());

    final String image = Common.IMAGE_LOAD + 
     mMovies.get(position).getPosterPath();

     Picasso.with(context)
            .load(image)
            .into(holder.imageMovie);



      holder.rating.setText(String.valueOf(
     mMovies.get(position).getVoteAverage()));

    holder.dateMovie.setText(mMovies.get(position).getReleaseDate());

    holder.setItemClickListener(new ItemClickListener() {
        @Override
        public void onClick(View view, int position) {
            Intent intent = new Intent(context, MovieDetails.class);
            Result result = mMovies.get(position);

            intent.putExtra(SELECTED_MOVIE, result);
            context.startActivity(intent);

        }
    });


  }

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

   class MyViewHolder extends RecyclerView.ViewHolder implements 
   View.OnClickListener {
    ImageView imageMovie;
    TextView nameMovie;
    TextView rating;
    TextView dateMovie;
    ItemClickListener itemClickListener;


    public MyViewHolder(View itemView) {
        super(itemView);
        this.imageMovie = (ImageView) 
    itemView.findViewById(R.id.image_movie);
        this.nameMovie = (TextView) itemView.findViewById(R.id.name_movie);
        this.rating = (TextView) itemView.findViewById(R.id.rating);
        this.dateMovie = (TextView) itemView.findViewById(R.id.date);
        itemView.setOnClickListener(this);
    }

    public void setItemClickListener(ItemClickListener itemClickListener) {
        this.itemClickListener = itemClickListener;
    }

    @Override
    public void onClick(View v) {
        itemClickListener.onClick(v, getAdapterPosition());
      }
      }
    }

1 个答案:

答案 0 :(得分:0)

从翻新文档中:

  

URL操作可以使用来动态更新请求URL   方法上的替换块和参数。替换块   是由{和}包围的字母数字字符串。对应的   参数必须使用相同的字符串@Path注释。

@GET("group/{id}/users")
Call<List<User>> groupList(@Path("id") int groupId);

https://square.github.io/retrofit/