Recycler查看可点击项目

问题描述 投票:0回答:1

我按照我的 android peoject geeksforgeeks 的教程进行操作,并且成功了。

但是,我想为我的项目添加更多功能。

查看 geeksforgeeks.org 的教程,告诉我如何使 recyclerview 可点击并将项目中的每个数据打开到新的空活动布局。

我在网上尝试了有关 onclick 的示例,但无法理解整个过程。我期待有人能给我完整的答案,与 geeksofgeek.org 中显示的教程相同。

android android-recyclerview android-sqlite clickable
1个回答
0
投票

使回收者查看项目可点击 首先更新 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");
© www.soinside.com 2019 - 2024. All rights reserved.