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

无法从Recycler View适配器的setOnclickListener中启动活动

封景曜
2023-03-14

我用grid layout manager实现了一个recycler视图来创建一个类别列表。现在,基本上我已经尝试在我的holder-inside-OnCreateViewholder方法中实现一个setOnClick侦听器。在运行代码时,我遇到了这个错误

android.util.AndroidRuntimeExcture:从活动上下文外部调用starActive()需要FLAG_ACTIVITY_NEW_TASK标志。这真的是你想要的吗?

这是我的适配器代码

package com.paaltao.Adapters;

import android.content.Context;
import android.content.Intent;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

import com.paaltao.R;
import com.paaltao.activity.ProductDetailsActivity;
import com.paaltao.classes.Category;

import java.util.Collections;
import java.util.List;

/**
 * Created by Arindam on 02-Feb-15.
 */
public class CategoryAdapter extends RecyclerView.Adapter<CategoryAdapter.CategoryHolder> {
    private Context context;
    private LayoutInflater inflater;
    private View view;
    List<Category> data = Collections.emptyList();

    public CategoryAdapter(Context context ,List<Category> data){
        this.data = data;
        this.context= context;
    }
    @Override
    public CategoryHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        inflater = LayoutInflater.from(parent.getContext());

        view = inflater.inflate(R.layout.category_card, parent, false);


        CategoryHolder holder = new CategoryHolder(view);
        holder.categoryImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(context,ProductDetailsActivity.class);
                context.startActivity(intent);

                }
        });
        return holder;
    }

    @Override
    public void onBindViewHolder(CategoryHolder holder, int position) {

        Category current = data.get(position);
        holder.categoryName.setText(current.getCategory_name());
        holder.categoryImage.setImageResource(current.getCategory_id());

    }

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

    class CategoryHolder extends RecyclerView.ViewHolder {
        TextView categoryName;
        ImageView categoryImage;

        public CategoryHolder(View itemView) {
            super(itemView);

            categoryImage = (ImageView) itemView.findViewById(R.id.category_image);
            categoryName = (TextView) itemView.findViewById(R.id.category_name);

        }
    }
}

共有1个答案

戈睿识
2023-03-14

私有上下文中的上下文 很可能不是活动上下文。初始化活动时,需要将其作为CategoryAdapter的第一个参数传递:CategoryAdapter adapter=new CategoryAdapter(活动,数据)

 类似资料:
  • 我试图通过按cardview开始另一项活动,cardview有一个朋友查找id。但是当我写回家时。java它给了我setOnClickListener中的问题。在homeActivity中,它告诉我无法解析“homeActivity”中的方法“homeActivity”。因为

  • 问题内容: 我收到一个错误,但我不明白是什么原因引起的。 这是生成错误的代码片段: 这是我的文件: 上面的代码导致 ,但是我不明白我正在访问什么空指针,因为我没有使用任何不安全的构造。完整的错误如下: 我该如何解决? 谢谢 问题答案: 您必须先致电才能注册。

  • 在我的主要活动中,我有三个循环利用的观点。 其中一个在底部工作表中,它是主要的(默认情况下,底部工作表是打开以显示这个),在其适配器的onbind方法中,我做了一个onClickListener,以便当用户单击其中的项目时,我想要, 我想回到主活动类来设置To Start一个方法,它的滚动是关闭底表并为下一个回收视图设置数据(当底表关闭时会出现) ......这里的问题是如何从onBind方法的L

  • 问题内容: 在添加异步任务之前,我已经对代码进行了一些更改,我的应用程序可以正常运行其远程服务器上的身份验证用户名和密码,但是在登录成功消息消失后​​无法启动其他活动。有人建议我现在添加一个异步任务,但是我输入正确的用户名和密码后它将停止工作。当我输入错误的用户名和密码时,其工作正常将显示错误的用户名密码消息。如果有人能够知道会出现什么错误,请帮助我。 码- 日志猫 QuestionnActivi

  • MainFormular.java 在Android.app.activity.performCreate(activity_main_formular 洛克卡特

  • 错误是: 错误:(50,17)错误:没有为startActivities(Intent)方法Activity找到合适的方法。startActivities(Intent[],Bundle)不适用(实际和正式的参数列表长度不同)方法Activity.startActivities(Intent[])方法上下文twrapper.startactivities(Intent[],Bundle)不适用(实