
我正在实现一个自定义@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所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)