0

My Layout Design is this enter image description here

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);
        }
    }
}
Reny
  • 19
  • 5

1 Answers1

0

I think it's ok but you can make every recyclerview in fragment using bottom navigation to make the user experience better