Android 单击自定义列表上的按钮时显示对话框

Android 单击自定义列表上的按钮时显示对话框,android,android-listview,android-arrayadapter,onclicklistener,android-alertdialog,Android,Android Listview,Android Arrayadapter,Onclicklistener,Android Alertdialog,当我想用2按钮显示对话框时,出现了一些错误。我尝试了以下代码。。。 实际上,当它只显示toast时,我没有得到一个错误 我的arrayadapter.class package id.mungil.santa; import java.io.InputStream; import java.util.ArrayList; import android.app.AlertDialog; import android.app.Dialog; import android.content.Cont

当我想用2按钮显示对话框时,出现了一些错误。我尝试了以下代码。。。 实际上,当它只显示toast时,我没有得到一个错误

我的arrayadapter.class

package id.mungil.santa;

import java.io.InputStream;
import java.util.ArrayList;

import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

public class campaignAdapter extends ArrayAdapter<Campaign> {
    ArrayList<Campaign> campaignList;
    LayoutInflater vi;
    int Resource;
    ViewHolder holder;
    Context mContext;

    public campaignAdapter(Context context, int resource, ArrayList<Campaign> objects){
        super(context, resource, objects);
        vi = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        Resource = resource;
        campaignList = objects;
        mContext = context;
    }


    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
        View v = convertView;
        if (v == null) {
            holder = new ViewHolder();
            v = vi.inflate(Resource, null);
            holder.imgAds = (ImageView) v.findViewById(R.id.imgAds);
            holder.tTitle = (TextView) v.findViewById(R.id.tTitle);
            holder.tShortDEsc = (TextView) v.findViewById(R.id.tDesc);
            holder.bPoin = (Button) v.findViewById(R.id.bPoin);
            holder.bAction = (Button) v.findViewById(R.id.bAction);
            holder.tLongDesc = (TextView) v.findViewById(R.id.tLongdesc);
            holder.tIdAds = (TextView) v.findViewById(R.id.tIdAds);
            holder.tActionLink = (TextView) v.findViewById(R.id.tActionlink);
            v.setTag(holder);
        } else {
            holder = (ViewHolder) v.getTag();
        }
        holder.imgAds.setImageResource(R.drawable.ic_launcher);
        new DownloadImageTask(holder.imgAds).execute(campaignList.get(position).getImgAds());
        holder.tTitle.setText(campaignList.get(position).getTitle());
        holder.tShortDEsc.setText(campaignList.get(position).getShortDesc());
        holder.bPoin.setText(campaignList.get(position).getPoin());
        holder.bAction.setText(campaignList.get(position).getActionTitle());
        holder.bAction.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Toast.makeText(mContext, "test", 1000).show();
                AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
                builder.setTitle("Are you sure you ?");
                builder.setMessage("Are you suer you want to remove this item from the cart?");
                builder.setPositiveButton("No", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.cancel();
                    }

                });
                builder.setNegativeButton("Yes", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {

                    }
                });
                Dialog dd= builder.create();
                dd.show();

            }
        });
        holder.tLongDesc.setText(campaignList.get(position).getLongDesc());
        holder.tIdAds.setText(campaignList.get(position).getIdAds());
        holder.tActionLink.setText(campaignList.get(position).getActionLink());
        return v;
    }



    static class ViewHolder {
        public ImageView imgAds;
        public TextView tTitle;
        public TextView tShortDEsc;
        public TextView tLongDesc;
        public Button bPoin;
        public Button bAction;
        public TextView tActionLink;
        public TextView tIdAds;

    }

    private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
        ImageView bmImage;

        public DownloadImageTask(ImageView bmImage) {
            this.bmImage = bmImage;
        }

        protected Bitmap doInBackground(String... urls) {
            String urldisplay = urls[0];
            Bitmap mIcon11 = null;
            try {
                InputStream in = new java.net.URL(urldisplay).openStream();
                mIcon11 = BitmapFactory.decodeStream(in);
            } catch (Exception e) {
                Log.e("Error", e.getMessage());
                e.printStackTrace();
            }
            return mIcon11;
        }

        protected void onPostExecute(Bitmap result) {
            bmImage.setImageBitmap(result);
        }

    }
}
1) 使用此函数或从中获取代码

public void showAlert(){  

    AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);

    // Setting Dialog Title
    alertDialog.setTitle("Your Title");

    // Setting Dialog Message
    alertDialog.setMessage("Your Message");

    // On pressing the Yes button.
    alertDialog.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog,int which) {
            // ToDo here
        }
    });

    // On pressing the No button
    alertDialog.setNegativeButton("No", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
        dialog.cancel();
        }
    });

    // Showing Alert Message
    alertDialog.show();
}

不要在中传递上下文

 AlertDialog.Builder builder = new AlertDialog.Builder(mContext);

不能通过非活动的上下文显示对话框。尝试传递有效的活动引用。

不确定。。但尝试在清单中添加
,并检查是否有效。因为上下文是正确的。还没有。。仍然在后台线程上完成或显示错误@MysticMagicActivity。检查一下这个哦。尝试使用
AlertDialog.Builder=newalertdialog.Builder(YourActivityName.this)@MysticMagic仍有错误。。实际上,该类扩展了arrayadapter以填充自定义listview。
AlertDialog.Builder ad = new AlertDialog.Builder(
                        getActivity());

                ad.setTitle("Error");
                ad.setMessage("FinalPolishRate is Empty");

                ad.setPositiveButton("Ok",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,
                                    int button1) {

                                dialog.cancel();
                            }

                        });

                AlertDialog alertDialog = ad.create();
                alertDialog.show();
AlertDialog.Builder ad = new AlertDialog.Builder(
                        getActivity());

                ad.setTitle("Error");
                ad.setMessage("FinalPolishRate is Empty");

                ad.setPositiveButton("Ok",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,
                                    int button1) {

                                dialog.cancel();
                            }

                        });

                AlertDialog alertDialog = ad.create();
                alertDialog.show();