package com.rajendra.courseapp;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Bundle;
import com.rajendra.courseapp.adapter.CourseForYouAdapter;
import com.rajendra.courseapp.adapter.PopularCourseAdapter;
import com.rajendra.courseapp.model.CourseData;
import com.rajendra.courseapp.model.CourseForYou;
import com.rajendra.courseapp.model.PopularCourse;
import com.rajendra.courseapp.retrofit.ApiInterface;
import com.rajendra.courseapp.retrofit.RetrofitClient;
import java.util.List;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
public class MainActivity extends AppCompatActivity {
ApiInterface apiInterface;
RecyclerView popularRecycler, courseForYouRecycler;
PopularCourseAdapter popularCourseAdapter;
CourseForYouAdapter courseForYouAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
apiInterface = RetrofitClient.getRetrofitInstance().create(ApiInterface.class);
Call> call = apiInterface.getAllCourses();
call.enqueue(new Callback>() {
@Override
public void onResponse(Call> call, Response> response) {
List courseDataList = response.body();
setPopularRecycler(courseDataList.get(0).getPopularCourses());
setCourseForYouRecycler(courseDataList.get(0).getCourseForYou());
}
@Override
public void onFailure(Call> call, Throwable t) {
}
});
}
private void setPopularRecycler(List popularCourseList){
popularRecycler = findViewById(R.id.popular_recycler);
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);
popularRecycler.setLayoutManager(layoutManager);
popularCourseAdapter = new PopularCourseAdapter(this, popularCourseList);
popularRecycler.setAdapter(popularCourseAdapter);
}
private void setCourseForYouRecycler(List courseForYouList){
courseForYouRecycler = findViewById(R.id.course_for_you);
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false);
courseForYouRecycler.setLayoutManager(layoutManager);
courseForYouAdapter = new CourseForYouAdapter(this, courseForYouList);
courseForYouRecycler.setAdapter(courseForYouAdapter);
}
}
activity_main.xml
CourseDetails.java (MainActivity)
package com.rajendra.courseapp;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.os.Bundle;
import com.rajendra.courseapp.adapter.LessonAdapter;
import com.rajendra.courseapp.adapter.PopularCourseAdapter;
import com.rajendra.courseapp.model.CourseData;
import com.rajendra.courseapp.model.CourseDetail;
import com.rajendra.courseapp.model.PopularCourse;
import com.rajendra.courseapp.model.VideoLession;
import com.rajendra.courseapp.retrofit.ApiInterface;
import com.rajendra.courseapp.retrofit.RetrofitClient;
import java.util.List;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
public class CourseDetails extends AppCompatActivity {
ApiInterface apiInterface;
RecyclerView lessonRecycler;
LessonAdapter lessonAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_course_details);
apiInterface = RetrofitClient.getRetrofitInstance().create(ApiInterface.class);
Call> call = apiInterface.getAllLesson();
call.enqueue(new Callback>() {
@Override
public void onResponse(Call> call, Response> response) {
List courseDataList = response.body();
setLessonList(courseDataList.get(0).getVideoLession());
}
@Override
public void onFailure(Call> call, Throwable t) {
}
});
}
private void setLessonList(List videoLessionList){
lessonRecycler = findViewById(R.id.lesson_recycler);
RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
lessonRecycler.setLayoutManager(layoutManager);
lessonAdapter = new LessonAdapter(this, videoLessionList);
lessonRecycler.setAdapter(lessonAdapter);
}
}
activity_course_details.xml
VideoLesson.java (Data)
package com.rajendra.courseapp.model;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class VideoLession {
@SerializedName("name")
@Expose
private String name;
@SerializedName("videoUrl")
@Expose
private String videoUrl;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getVideoUrl() {
return videoUrl;
}
public void setVideoUrl(String videoUrl) {
this.videoUrl = videoUrl;
}
}
lesson_row_item.xml
LessonAdapter.javapackage com.rajendra.courseapp.adapter; import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; 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.recyclerview.widget.RecyclerView; import com.rajendra.courseapp.R; import com.rajendra.courseapp.VideoPlayer; import com.rajendra.courseapp.model.VideoLession; import java.util.List; public class LessonAdapter extends RecyclerView.Adapter{ Context context; List videoLessionList; public LessonAdapter(Context context, List videoLessionList) { this.context = context; this.videoLessionList = videoLessionList; } @NonNull @Override public LessonViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.lesson_row_item, parent, false); //here we need to create a row item layout file return new LessonViewHolder(view); } @Override public void onBindViewHolder(@NonNull LessonViewHolder holder, @SuppressLint("RecyclerView") final int position) { //here we will bind data to our layout holder.lessonName.setText(videoLessionList.get(position).getName()); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent i = new Intent(context, VideoPlayer.class); i.putExtra("url", videoLessionList.get(position).getVideoUrl()); context.startActivity(i); } }); } @Override public int getItemCount() { return videoLessionList.size(); } public static class LessonViewHolder extends RecyclerView.ViewHolder{ TextView lessonName; public LessonViewHolder(@NonNull View itemView) { super(itemView); lessonName = itemView.findViewById(R.id.lesson_name); } } }



