如何通过按钮从ArrayAdapter启动新活动?

时间:2016-11-23 16:30:51

标签: java android

我想通过按钮从我的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;代码?它应该在另一个活动中吗? 请帮我 。感谢

2 个答案:

答案 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);
        }
    });