The Code Function well but I want to know if there's is better way I can do this.
My fist adapter:
private Context mContext;
private List<Directors> directorsList;
public MyAdaperD(Context mContext, List<Directors> directorsList) {
this.mContext = mContext;
this.directorsList = directorsList;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v;
LayoutInflater layoutInflater = LayoutInflater.from(mContext);
v = layoutInflater.inflate(R.layout.item_director, parent, false);
return new MyViewHolder(v);
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
holder.name.setText(directorsList.get(position).getName());
holder.movie_count.setText(directorsList.get(position).getMovie_count());
//Glide
Glide.with(mContext)
.load(directorsList.get(position).getAvatar())
.into(holder.avator);
}
@Override
public int getItemCount() {
return directorsList.size();
}
public static class MyViewHolder extends RecyclerView.ViewHolder {
ImageView avator;
TextView name;
TextView movie_count;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
name = itemView.findViewById(R.id.text_view_name);
avator = itemView.findViewById(R.id.image_view_director);
movie_count = itemView.findViewById(R.id.text_movie_count);
}
}
}
MainActivity.Java
public class MainActivity extends AppCompatActivity {
private RecyclerView recyclerViewMovie, recyclerViewDirectors;
private MockApi mockApi;
private List<RecommendMovie> recommendMovieList;
private MyAdapter myAdapter;
private MyAdaperD myAdaperD;
private List<Directors> directorsList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
recyclerViewMovie = findViewById(R.id.recylerViewMovie);
recyclerViewDirectors = findViewById(R.id.recylerViewDirector);
recommendMovieList = new ArrayList<>();
directorsList = new ArrayList<>();
getRecommendMovie();
getDirectorList();
}
private void getRecommendMovie() {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.jsonserve.com/")
.addConverterFactory(GsonConverterFactory.create())
.build();
mockApi = retrofit.create(MockApi.class);
Call<List<RecommendMovie>> call = mockApi.getRecommendMovie();
call.enqueue(new Callback<List<RecommendMovie>>() {
@Override
public void onResponse(Call<List<RecommendMovie>> call, Response<List<RecommendMovie>> response) {
if (!response.isSuccessful()) {
Toast.makeText(MainActivity.this, "Code: " + response.code(), Toast.LENGTH_LONG).show();
return;
}
List<RecommendMovie> MovieList = response.body();
for (RecommendMovie recommendMovie : MovieList) {
recommendMovieList.add(recommendMovie);
}
PutDataIntoRecylerView(recommendMovieList);
}
@Override
public void onFailure(Call<List<RecommendMovie>> call, Throwable t) {
Toast.makeText(MainActivity.this, "Error: " + t.getMessage(), Toast.LENGTH_LONG).show();
t.printStackTrace();
}
});
}
private void getDirectorList() {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.jsonserve.com/")
.addConverterFactory(GsonConverterFactory.create())
.build();
mockApi = retrofit.create(MockApi.class);
Call<List<Directors>> call = mockApi.getDirectorsList();
call.enqueue(new Callback<List<Directors>>() {
@Override
public void onResponse(Call<List<Directors>> call, Response<List<Directors>> response) {
if (!response.isSuccessful()) {
Toast.makeText(MainActivity.this, "Code: " + response.code(), Toast.LENGTH_LONG).show();
return;
}
List<Directors> directorsListd = response.body();
for (Directors directors : directorsListd) {
directorsList.add(directors);
}
PutDataIntoRecylerViewdr(directorsList);
}
@Override
public void onFailure(Call<List<Directors>> call, Throwable t) {
Toast.makeText(MainActivity.this, "Error: " + t.getMessage(), Toast.LENGTH_LONG).show();
t.printStackTrace();
}
});
}
private void PutDataIntoRecylerView(List<RecommendMovie> recommendMovieList) {
myAdapter = new MyAdapter(this, recommendMovieList);
recyclerViewMovie.setLayoutManager(new LinearLayoutManager(this));
recyclerViewMovie.setAdapter(myAdapter);
}
private void PutDataIntoRecylerViewdr(List<Directors> directorsList) {
myAdaperD = new MyAdaperD(this, directorsList);
recyclerViewDirectors.setLayoutManager(new LinearLayoutManager(this));
recyclerViewDirectors.setAdapter(myAdaperD);
}
} ```
**MySecodAdapterClass**
public class MyAdaperD extends RecyclerView.Adapter<MyAdaperD.MyViewHolder> {
private Context mContext;
private List<Directors> directorsList;
public MyAdaperD(Context mContext, List<Directors> directorsList) {
this.mContext = mContext;
this.directorsList = directorsList;
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v;
LayoutInflater layoutInflater = LayoutInflater.from(mContext);
v = layoutInflater.inflate(R.layout.item_director, parent, false);
return new MyViewHolder(v);
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
holder.name.setText(directorsList.get(position).getName());
holder.movie_count.setText(directorsList.get(position).getMovie_count());
//Glide
Glide.with(mContext)
.load(directorsList.get(position).getAvatar())
.into(holder.avator);
}
@Override
public int getItemCount() {
return directorsList.size();
}
public static class MyViewHolder extends RecyclerView.ViewHolder {
ImageView avator;
TextView name;
TextView movie_count;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
name = itemView.findViewById(R.id.text_view_name);
avator = itemView.findViewById(R.id.image_view_director);
movie_count = itemView.findViewById(R.id.text_movie_count);
}
}
}