Start Intent in Adapter
you have passed context of activity in constructor so you can also use;
activity.startActivity(new Intent(activity, NVirementEmmeteur.class));
check here is sample code you get idea what to do:
setadapter like : adapter = new MyArrayAdapter(MainActivity.this, COUNTRIES);
adapter code:
package com.example.testapp;
import com.example.main.util.testActivity;
import android.content.Context;
import android.content.Intent;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
class MyArrayAdapter extends BaseAdapter {
private LayoutInflater mInflater;
private Context mcon;
private String[] COUNTRIES_;
public MyArrayAdapter(Context con, String[] countries) {
// TODO Auto-generated constructor stub
mcon = con;
COUNTRIES_ = countries;
mInflater = LayoutInflater.from(con);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return COUNTRIES_.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
final ListContent holder;
View v = convertView;
if (v == null) {
v = mInflater.inflate(R.layout.my_spinner_style, null);
holder = new ListContent();
holder.line = (LinearLayout) v.findViewById(R.id.line_);
holder.name = (TextView) v.findViewById(R.id.textView1);
holder.name1 = (TextView) v.findViewById(R.id.textView2);
holder.name2 = (ImageView) v.findViewById(R.id.imageView1);
v.setTag(holder);
} else {
holder = (ListContent) v.getTag();
}
holder.name.setText("" + Html.fromHtml("" + COUNTRIES_[position]));
holder.name1.setText("" + Html.fromHtml("" + COUNTRIES_[position]));
holder.line.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
mcon.startActivity(new Intent(mcon, testActivity.class));
}
});
return v;
}
}
class ListContent {
TextView name;
TextView name1;
ImageView name2;
LinearLayout line;
}
Edited:
if your are use this constructor: then list.setadapter(new EfficientAdapter(myactivity.this));
public EfficientAdapter(Context context) {
this.context = context;
}
then use : context.startActivity(new Intent(context, NVirementEmmeteur.class));
if you use this construdtor list.setadapter(new EfficientAdapter(myactivity.this, ComptePostarray));
public EfficientAdapter(Activity a, ArrayList<ComptePost> d) {
activity = a;
data = d;
inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
// imageLoader = new ImageLoader(activity.getApplicationContext());
imageLoader=new ImageLoader(activity.getApplicationContext());
}
then use activity.startActivity(new Intent(activity, NVirementEmmeteur.class));
Hope you understud....
I faced this problem previously and tried all of the suggestions above, but the only one helped me to start an activity from an adopter was the solution proposed by @Md. Sajedul Karim.
I modified the code and used like this
Intent intent = new Intent(context, NesneTani.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);