Start Intent in Adapter

前端 未结 8 1685
清酒与你
清酒与你 2021-02-02 13:32

I want to start a new activity from this base adapter.

public class EfficientAdapter extends BaseAdapter {

    private Activity activity;
    private ArrayList         


        
8条回答
  •  陌清茗
    陌清茗 (楼主)
    2021-02-02 13:56

    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 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....

提交回复
热议问题