我按照我的 android peoject geeksforgeeks 的教程进行操作,并且成功了。
但是,我想为我的项目添加更多功能。
查看 geeksforgeeks.org 的教程,告诉我如何使 recyclerview 可点击并将项目中的每个数据打开到新的空活动布局。
我在网上尝试了有关 onclick 的示例,但无法理解整个过程。我期待有人能给我完整的答案,与 geeksofgeek.org 中显示的教程相同。
使回收者查看项目可点击 首先更新 coursemodal 类以实现 Serializeable,如下所示
public class CourseModal implements Serializable
按如下方式更新 CourseRVAdapter
public class CourseRVAdapter extends RecyclerView.Adapter<CourseRVAdapter.ViewHolder> {
// variable for our array list and context
private ArrayList<CourseModal> courseModalArrayList;
private Context context;
// constructor
public CourseRVAdapter(ArrayList<CourseModal> courseModalArrayList, Context context) {
this.courseModalArrayList = courseModalArrayList;
this.context = context;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
// on below line we are inflating our layout
// file for our recycler view items.
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.course_rv_item, parent, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
// on below line we are setting data
// to our views of recycler view item.
CourseModal modal = courseModalArrayList.get(position);
holder.courseNameTV.setText(modal.getCourseName());
holder.courseDescTV.setText(modal.getCourseDescription());
holder.courseDurationTV.setText(modal.getCourseDuration());
holder.courseTracksTV.setText(modal.getCourseTracks());
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (onClickListener != null) {
Intent intent = new Intent(context, CourseDetailActivity.class);
intent.putExtra("CourseDetail", modal);
context.startActivity(intent);
}
}
});
}
@Override
public int getItemCount() {
// returning the size of our array list
return courseModalArrayList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
// creating variables for our text views.
private TextView courseNameTV, courseDescTV, courseDurationTV, courseTracksTV;
public ViewHolder(@NonNull View itemView) {
super(itemView);
// initializing our text views
courseNameTV = itemView.findViewById(R.id.idTVCourseName);
courseDescTV = itemView.findViewById(R.id.idTVCourseDescription);
courseDurationTV = itemView.findViewById(R.id.idTVCourseDuration);
courseTracksTV = itemView.findViewById(R.id.idTVCourseTracks);
}
}
}
创建CourseDetailActivtity并在onCreate中获取课程对象。
CourseModal modal = (CourseModal)intent.getSerializableExtra("CourseDetail");