android-从自定义ListAdapter创建和显示AlertDialog

android-从自定义ListAdapter创建和显示AlertDialog,第1张

概述我正在实现一个自定义ListAdapter,它使用不同的列表项布局来显示一些项.从该自定义ListAdapter中,实际上我想在单击特定按钮时显示AlertDialog.我实现了onCreateDialog(int)方法,并且尝试使用showDialog(int)来显示对话框.但是对话框未显示在“活动”中.这是我的自定义listadapter

我正在实现一个自定义@R_419_2978@,它使用不同的列表项布局来显示一些项.从该自定义@R_419_2978@中,实际上我想在单击特定按钮时显示AlertDialog.我实现了onCreateDialog(int)方法,并且尝试使用showDialog(int)来显示对话框.但是对话框未显示在“活动”中.

这是我的自定义@R_419_2978@文件

import androID.app.Activity;import androID.app.AlertDialog;import androID.app.Dialog;import androID.content.DialogInterface;import androID.vIEw.LayoutInflater;import androID.vIEw.VIEw;import androID.vIEw.VIEwGroup;import androID.Widget.BaseAdapter;import androID.Widget.button;import androID.Widget.TextVIEw;import androID.Widget.Toast;public class AddProblemsLayoutAdapter extends BaseAdapter {    private Activity mContext;    private static final int TYPE_Title = 0;    private static final int TYPE_TAG = 1;    private static final int TYPE_SolUTION = 2;    private static final int LAYOUT_MAX_COUNT = TYPE_SolUTION + 1;    private static final int ADD_TAG_DIALOG = 3378;    private static int ITEM_COUNT = 4;    private static button addSolution = null, addTag = null;
private Activity mContext;private static final int TYPE_Title = 0;private static final int TYPE_TAG = 1;private static final int TYPE_SolUTION = 2;private static final int LAYOUT_MAX_COUNT = TYPE_SolUTION + 1;private static final int ADD_TAG_DIALOG = 3378;private static int ITEM_COUNT = 4;private static button addSolution = null, addTag = null;public AddProblemsLayoutAdapter(Activity aContext) {    mContext = aContext;}@OverrIDepublic int getVIEwTypeCount() {    return LAYOUT_MAX_COUNT;}protected Dialog onCreateDialog(int ID) {    AlertDialog dialog = null;    AlertDialog.Builder builder = new AlertDialog.Builder(mContext);    switch (ID) {    case ADD_TAG_DIALOG:        builder.setMessage("Are you sure you want to exit?").setCancelable(                false).setPositivebutton("Yes",                new DialogInterface.OnClickListener() {                    public voID onClick(DialogInterface dialog, int ID) {                    }                }).setNegativebutton("No",                new DialogInterface.OnClickListener() {                    public voID onClick(DialogInterface dialog, int ID) {                        dialog.cancel();                    }                });        dialog = builder.create();        break;    default:        dialog = null;    }    dialog.setownerActivity(mContext);    return dialog;}@OverrIDepublic int getItemVIEwType(int position) {    if (position < 2)        return TYPE_Title;    else        return position > 2 ? TYPE_SolUTION : TYPE_TAG;}@OverrIDepublic VIEw getVIEw(int position, VIEw convertVIEw, VIEwGroup parent) {    int type = getItemVIEwType(position);    if (convertVIEw == null) {        LayoutInflater inflater = mContext.getLayoutInflater();        switch (type) {        case TYPE_Title:            convertVIEw = inflater.inflate(R.layout.Title_row, null);            break;        case TYPE_TAG:            convertVIEw = inflater.inflate(R.layout.tag_row, null);            break;        case TYPE_SolUTION:            convertVIEw = inflater.inflate(R.layout.solution_row, null);            break;        }    }    if (position == 0) {        TextVIEw TitleText = (TextVIEw) convertVIEw                .findVIEwByID(R.ID.TitleText);        TitleText.setText(R.string.Title_string);    } else if (position == 1) {        TextVIEw TitleText = (TextVIEw) convertVIEw                .findVIEwByID(R.ID.TitleText);        TitleText.setText(R.string.description_string);    } else if (position == 2) {        addTag = (button) convertVIEw.findVIEwByID(R.ID.addProblemTag);        addTag.setonClickListener(new VIEw.OnClickListener() {            @OverrIDe            public voID onClick(VIEw v) {                mContext.showDialog(ADD_TAG_DIALOG);                Toast.makeText(mContext, "Add Tags", Toast.LENGTH_LONG)                        .show();            }        });    } else if (position == 3) {        addSolution = (button) convertVIEw.findVIEwByID(R.ID.addSolution);        addSolution.setonClickListener(new VIEw.OnClickListener() {            @OverrIDe            public voID onClick(VIEw v) {                ITEM_COUNT++;                notifyDataSetChanged();            }        });    }    return convertVIEw;}@OverrIDepublic int getCount() {    return ITEM_COUNT;}@OverrIDepublic Object getItem(int position) {    // Todo auto-generated method stub    return null;}@OverrIDepublic long getItemID(int position) {    // Todo auto-generated method stub    return 0;}

}

任何人都可以给我一些关于如何在单击按钮时显示AlertDialog框的提示.

解决方法:

如果使用上下文调用showDialog,则可能要在Activity中而不是在适配器中定义onCreateDialog对话框.

总结

以上是内存溢出为你收集整理的android-从自定义ListAdapter创建和显示AlertDialog全部内容,希望文章能够帮你解决android-从自定义ListAdapter创建和显示AlertDialog所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1092839.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-28
下一篇2022-05-28

发表评论

登录后才能评论

评论列表(0条)

    保存