MainActivity.java
package com.codingstuff.movielist;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Bundle;
import android.widget.Toast;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonArrayRequest;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private RequestQueue requestQueue;
private List movieList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerView = findViewById(R.id.recyclerview);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
requestQueue = VolleySingleton.getmInstance(this).getRequestQueue();
movieList = new ArrayList<>();
fetchMovies();
}
private void fetchMovies() {
String url = "https://www.json-generator.com/api/json/get/cfsXpFGwwO?indent=2";
JsonArrayRequest jsonArrayRequest = new JsonArrayRequest(Request.Method.GET, url, null,
new Response.Listener() {
@Override
public void onResponse(JSONArray response) {
for (int i = 0 ; i < response.length() ; i ++){
try {
JSONObject jsonObject = response.getJSONObject(i);
String title = jsonObject.getString("title");
String overview = jsonObject.getString("overview");
String poster = jsonObject.getString("poster");
Double rating = jsonObject.getDouble("rating");
Movie movie = new Movie(title , poster , overview , rating);
movieList.add(movie);
} catch (JSONException e) {
e.printStackTrace();
}
MovieAdapter adapter = new MovieAdapter(MainActivity.this , movieList);
recyclerView.setAdapter(adapter);
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(MainActivity.this, error.getMessage(), Toast.LENGTH_SHORT).show();
}
});
requestQueue.add(jsonArrayRequest);
}
}
Movie.java
package com.codingstuff.movielist;
public class Movie {
private String title , poster , overview;
private Double rating;
public Movie(String title , String poster , String overview , Double rating){
this.title = title;
this.poster = poster;
this.overview = overview;
this.rating = rating;
}
public String getTitle() {
return title;
}
public String getPoster() {
return poster;
}
public String getOverview() {
return overview;
}
public Double getRating() {
return rating;
}
}
VolleySingleton.java
package com.codingstuff.movielist;
import android.content.Context;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.Volley;
public class VolleySingleton {
private RequestQueue requestQueue;
private static VolleySingleton mInstance;
private VolleySingleton(Context context){
requestQueue = Volley.newRequestQueue(context.getApplicationContext());
}
public static synchronized VolleySingleton getmInstance(Context context){
if (mInstance == null){
mInstance = new VolleySingleton(context);
}
return mInstance;
}
public RequestQueue getRequestQueue(){return requestQueue;}
}
MovieAdapter.java
package com.codingstuff.movielist;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import java.util.List;
public class MovieAdapter extends RecyclerView.Adapter {
private Context context;
private List movieList;
public MovieAdapter(Context context , List movies){
this.context = context;
movieList = movies;
}
@NonNull
@Override
public MovieHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.item , parent , false);
return new MovieHolder(view);
}
@Override
public void onBindViewHolder(@NonNull MovieHolder holder, int position) {
Movie movie = movieList.get(position);
holder.rating.setText(movie.getRating().toString());
holder.title.setText(movie.getTitle());
holder.overview.setText(movie.getOverview());
Glide.with(context).load(movie.getPoster()).into(holder.imageView);
holder.constraintLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context , DetailActivity.class);
Bundle bundle = new Bundle();
bundle.putString("title" , movie.getTitle());
bundle.putString("overview" , movie.getOverview());
bundle.putString("poster" , movie.getPoster());
bundle.putDouble("rating" , movie.getRating());
intent.putExtras(bundle);
context.startActivity(intent);
}
});
}
@Override
public int getItemCount() {
return movieList.size();
}
public class MovieHolder extends RecyclerView.ViewHolder{
ImageView imageView;
TextView title , overview , rating;
ConstraintLayout constraintLayout;
public MovieHolder(@NonNull View itemView) {
super(itemView);
imageView = itemView.findViewById(R.id.imageview);
title = itemView.findViewById(R.id.title_tv);
overview = itemView.findViewById(R.id.overview_tv);
rating = itemView.findViewById(R.id.rating);
constraintLayout = itemView.findViewById(R.id.main_layout);
}
}
}
DetailActivity.java
package com.codingstuff.movielist;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;
import com.bumptech.glide.Glide;
public class DetailActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);
ImageView imageView = findViewById(R.id.poster_image);
TextView rating_tv = findViewById(R.id.mRating);
TextView title_tv = findViewById(R.id.mTitle);
TextView overview_tv = findViewById(R.id.movervie_tv);
Bundle bundle = getIntent().getExtras();
String mTitle = bundle.getString("title");
String mPoster = bundle.getString("poster");
String mOverView = bundle.getString("overview");
double mRating = bundle.getDouble("rating");
Glide.with(this).load(mPoster).into(imageView);
rating_tv.setText(Double.toString(mRating));
title_tv.setText(mTitle);
overview_tv.setText(mOverView);
}
}
can you provide source code for xml also?
ReplyDelete