Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 意图和主动性don';不能在recyclerview适配器中的onclick()上工作_Android_Android Intent_Android Activity - Fatal编程技术网

Android 意图和主动性don';不能在recyclerview适配器中的onclick()上工作

Android 意图和主动性don';不能在recyclerview适配器中的onclick()上工作,android,android-intent,android-activity,Android,Android Intent,Android Activity,只需toast在onClick()上工作,没有其他功能,我也在AndroidManifest中创建了所有条目 Intent和startActivity在RecyclerView适配器中的onClick()上不起作用,而Toast工作正常 这是我的密码 public class ForecastAdapter extends RecyclerView.Adapter<ForecastAdapter.MyForecastViewHolder> { public Context conte

只需toast在
onClick()
上工作,没有其他功能,我也在
AndroidManifest
中创建了所有条目

Intent
startActivity
RecyclerView
适配器中的
onClick()
上不起作用,而
Toast
工作正常

这是我的密码

public class ForecastAdapter extends RecyclerView.Adapter<ForecastAdapter.MyForecastViewHolder> {
public Context context;

private LayoutInflater inflator;

List<Information> data = Collections.emptyList();

public ForecastAdapter(Context context, List<Information> data) {
    inflator = LayoutInflater.from(context);
    this.data = data;
    this.context = context;
}

@Override
public MyForecastViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View view = inflator.inflate(R.layout.custom_row_forecast, parent, false);
    MyForecastViewHolder holder = new MyForecastViewHolder(view);
    return holder;
}

@Override
public void onBindViewHolder(MyForecastViewHolder holder, final int position) {
    Information current = data.get(position);
    holder.title.setText(current.title);
    holder.icon.setImageResource(current.iconId);
}


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

class MyForecastViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
    TextView title;
    ImageView icon;

    public MyForecastViewHolder(View itemView) {
        super(itemView);
        itemView.setOnClickListener(this);
        title = (TextView) itemView.findViewById(R.id.temp);
        icon = (ImageView) itemView.findViewById(R.id.listIcon3);
    }

    @Override
    public void onClick(View v) {
        context.startActivity(new Intent(context,SubActivity.class));
    }
}
}
公共类ForecasAdapter扩展了RecyclerView.Adapter{
公共语境;
私人充气机;
List data=Collections.emptyList();
公共ForecasAdapter(上下文、列表数据){
充气器=从(上下文)开始充气;
这个数据=数据;
this.context=上下文;
}
@凌驾
公共MyForecastViewHolder onCreateViewHolder(视图组父级,int-viewType){
视图=充气机。充气(R.layout.custom\u row\u forecast,parent,false);
MyForecastViewHolder=新的MyForecastViewHolder(视图);
报税表持有人;
}
@凌驾
公共无效onBindViewHolder(MyForecastViewHolder,最终整数位置){
信息当前=数据获取(位置);
holder.title.setText(当前.title);
holder.icon.setImageResource(当前.iconId);
}
@凌驾
public int getItemCount(){
返回data.size();
}
类MyForecastViewHolder扩展了RecyclerView.ViewHolder实现了View.OnClickListener{
文本视图标题;
图像视图图标;
公共MyForecastViewHolder(查看项目视图){
超级(项目视图);
setOnClickListener(这个);
title=(TextView)itemView.findViewById(R.id.temp);
icon=(ImageView)itemView.findViewById(R.id.listIcon3);
}
@凌驾
公共void onClick(视图v){
新意图(context,SubActivity.class));
}
}
}

您如何知道以这种方式单击了哪个位置? 您应该将clickListener更改为onBindView方法内部,该方法可以为您提供单击的位置,并在根布局上设置它

大概是这样的:

class MyForecastViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
    TextView title;
    ImageView icon;

    public MyForecastViewHolder(View itemView) {
        super(itemView);
        itemView.setOnClickListener(this);
        title = (TextView) itemView.findViewById(R.id.temp);
        icon = (ImageView) itemView.findViewById(R.id.listIcon3);
        yourRootView = (LayoutType) itemView.findViewById(R.id.root);
    }

    @Override
    public void onClick(View v) {
        context.startActivity(new Intent(context,SubActivity.class));
    }
}

@Override
public void onBindViewHolder(MyForecastViewHolder holder, final int position) {
    Information current = data.get(position);
    holder.title.setText(current.title);
    holder.icon.setImageResource(current.iconId);
    holder.yourRootView.setTag(position); // get it after with getTag()
    holder.yourRootView.setOnClickListener(this);
}
当你说“不工作”时,应用程序会崩溃吗?如果是这样,请从Logcate中发布错误(您应该阅读;)