Android 意图和主动性don';不能在recyclerview适配器中的onclick()上工作
只需toast在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
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中发布错误(您应该阅读;)