当前位置: 首页 > 知识库问答 >
问题:

如何从recyclerview中单击项目打开新活动[重复]

西门安歌
2023-03-14
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setConten``tView(R.layout.lessons_layout);
    recyclerView=findViewById(R.id.recyclerview);
    MyAdapter myAdapter=new 
    MyAdapter(RecylerActivity.this,Lesson.getdata());
    recyclerView.setAdapter(myAdapter);

    LinearLayoutManager linearLayoutManager=new 
    LinearLayoutManager(RecylerActivity.this);
    linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
    recyclerView.setLayoutManager(linearLayoutManager);
}
public MyAdapter(Context context,ArrayList<Lesson> data){

    this.data = data;
    inflater=LayoutInflater.from(context);

    this.mDataList=data;
}

@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View v=inflater.inflate(R.layout.list_item,viewGroup,false);
MyViewHolder holder=new MyViewHolder(v);
return holder;
}

@Override
public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, int i) {
    Lesson ClickedLesson=mDataList.get(i);
    myViewHolder.setData(ClickedLesson,i);

}

@Override
public int getItemCount() {
    return mDataList.size();
}

class MyViewHolder extends RecyclerView.ViewHolder{
    TextView mLessonName,mLessonPoint;
    RelativeLayout rel;

    public MyViewHolder(@NonNull final View itemView) {
        super(itemView);
        mLessonName=(TextView)itemView.findViewById(R.id.tvLessonName);
        mLessonPoint=(TextView)itemView.findViewById(R.id.tvLessonPoint);
        rel=(RelativeLayout)itemView.findViewById(R.id.Rellayout);

    }
    public void setData(Lesson ClickedLesson,int i){
        this.mLessonName.setText(ClickedLesson.getLessonname());
        this.mLessonPoint.setText(ClickedLesson.getPoint());
    }

}

--lesson.java

public Lesson() {
}
public Lesson(String lessonname,String point) {
    this.lessonname=lessonname;
    this.point=point;
}

public String getLessonname() {
    return lessonname;
}

public String getPoint() {
    return point;
}

public void setLessonname(String lessonname) {
    this.lessonname = lessonname;
}

public void setPoint(String point) {
    this.point = point;
}
public static ArrayList<Lesson> getdata(){
    ArrayList<Lesson> dataList=new ArrayList<Lesson>();

    Lesson tmp=new Lesson();
    tmp.setLessonname("Matematik");
    tmp.setPoint("BA");
    dataList.add(tmp);
    Lesson tmp2=new Lesson();
    tmp2.setLessonname("Mobil programlama");
    tmp2.setPoint("AA");
    dataList.add(tmp2);
    Lesson tmp3=new Lesson();
    tmp3.setLessonname("Algoritma");
    tmp3.setPoint("BB");
    dataList.add(tmp3);
    Lesson tmp4=new Lesson();
    tmp4.setLessonname("İngilizce");
    tmp4.setPoint("DC");
    dataList.add(tmp4);
    Lesson tmp5=new Lesson();
    tmp5.setLessonname("Yapay zeka");
    tmp5.setPoint("CC");
    dataList.add(tmp5);
    return dataList;
}

--list_item.xml

<RelativeLayout
    android:id="@+id/Rellayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/cardview_shadow_end_color"
    android:clickable="true"
    android:orientation="horizontal">
    <TextView
        android:id="@+id/tvLessonName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Ders"
        android:textSize="25sp"
        android:textStyle="bold"
        android:layout_margin="7dp"/>
    <TextView
        android:id="@+id/tvLessonPoint"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Not"
        android:textSize="20sp"
        android:layout_alignParentEnd="true"
        android:textStyle="italic"
        android:layout_margin="7dp"/>

</RelativeLayout>

共有1个答案

周枫涟
2023-03-14

在适配器内部,添加点击监听器以启动活动。

 holder.yourItem.setOnClickListener(v -> {
            Intent intent = new Intent(context, YourActivity.class);
            Lesspn lesson = lesson.get(position);
            intent.putExtra("lesson_details", lesson);
            context.startActivity(intent, options.toBundle());
        });

然后在下一个活动中

Lesson lesson = (Lesson) intent.getSerializableExtra("lesson_details");

您的课程应实现Serializable

 类似资料:
  • 我在中有显示类别列表的片段,我想在用户单击类别项目时添加一个选项,应该开始一个新活动()其中包含一个显示文章列表的片段。 问题是,当我使用打开活动的方法Intent时,我会出现多个错误。 这是我的MainActivity2: 这是我把我的重定向: 这是我的日志:

  • 当我点击listview项时,我试图启动一个活动。但是当我运行程序时,我得到了一些错误,比如: list_layout.xml

  • 问题内容: 我有一个关于将点击的Cardview数据传递到活动的问题,这里是全文: 我有一个称为“详细信息”的活动,该活动的布局中包含2个TextViews,分别是Title和Description。 我设置了一个片段(tab_1),其中包含recyclerview代码和item数据,其中的每个item都包含:title&description。 我想要的是 : 当用户单击项目时,它将打开“详细信

  • 我有一个带有通知的应用程序,如果我单击它们,就会打开某个活动。我想要的是,如果我点击通知,活动已经打开,它不是重新开始,但只是出现在前面。 我可以用标志来管理它吗?还是我应该在SharedPreferences中存储一个变量来检查它是否已打开? 谢谢!

  • 主要内容:Eclipse 重新打开关闭的项目Eclipse 重新打开关闭的项目 要重新打开一个关闭的项目,在 Package Explorer 视图中,选择关闭的项目并单击 Project 菜单并选择 Open Project。 项目打开后,可以使用 Eclipse 用户界面编辑其内容。

  • 我已经尝试了所有的方法,但它不适合我。我想打开或恢复应用程序,无论屏幕打开,同时单击通知。 我使用了以下方法: