我想通过按钮从我的Adapter Activity启动一个新活动到另一个活动。我是Android工作室的新手,我搜索了一些主题,我找到了一些解决方案,但仍然没有修复我的代码,他们不断讲述不同的错误。请帮我 。
我想通过ReserveActivity.java
将其移至btn_reserve
但是当我运行上面的代码时,它说
Error:(54, 28) error: no suitable constructor found for Intent(<anonymous OnClickListener>,Class<ReserveActivity>)
constructor Intent.Intent(String,Uri) is not applicable
(argument mismatch; <anonymous OnClickListener> cannot be converted to String)
构造函数Intent.Intent(Context,Class)不适用
(参数不匹配;无法转换为上下文)
所以继承我的代码
public class mainmodeladapter extends ArrayAdapter<String> {
private Activity context;
private final String[] itemname;
private final Integer[] imgid;
private Context mContext;
public mainmodeladapter(Activity context, String[] itemname, Integer[] imgid) {
super(context, R.layout.modelmain, itemname);
this.context=context;
this.itemname=itemname;
this.imgid=imgid;
}
public View getView(int position,View view,ViewGroup parent) {
LayoutInflater inflater=context.getLayoutInflater();
View rowView=inflater.inflate(R.layout.modelmain, null,true);
TextView txtTitle = (TextView) rowView.findViewById(R.id.lapangantxt);
ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);
TextView extratxt = (TextView) rowView.findViewById(R.id.hargatxt);
txtTitle.setText(itemname[position]);
imageView.setImageResource(imgid[position]);
extratxt.setText("Rp 150.000/Jam");
return rowView;
Button btn_reserve = (Button) rowView.findViewById(R.id.btn_reserve);
btn_reserve.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(this, ReserveActivity.class);
context.startActivity(i);
}
});
};
}
我在另一个帖子中搜索过,它说我需要放context.startActivity(i)
因为它的适配器,因为当我从context.
删除startActivity(i);
时,它开始显示为红色突出显示
rowView.findViewById(R.id.btn_reserve);
如果我删除rowView.
findviewById();
将开始有红色突出显示,我也不知道为什么。我错放了&#34; btn&#34;代码?它应该在另一个活动中吗?
请帮我 。感谢
答案 0 :(得分:0)
你可以说mainmodeladapter.this是意图的第一个参数。
答案 1 :(得分:0)
您还应该在意图的第一个参数中传递相同的活动contex 。
btn_reserve.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(context /* note here I am using context*/,ReserveActivity.class);
context.startActivity(i);
}
});