如何让 BaseAdapter 显示 AlertDialog android 应用程序

2023-12-05

如何使 listView 中的 BaseAdapter 中的按钮显示alertDialog,我尝试过,但它意外停止工作(运行时错误),我的代码如下所示。

任何建议

提前致谢

莫内拉

====更新后====================

import java.util.List;

import android.app.AlertDialog;
import android.content.Context;
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 MyCasesListAdapter extends BaseAdapter {
    private Context context;

    private List<MyCaseClass> listOfCases;

    // TODO delete it not imp.
    public MyCasesListAdapter() {

        super();

    }

    public MyCasesListAdapter(Context context, List<MyCaseClass> listPhonebook) {
        this.context = context;
        this.listOfCases = listPhonebook;
    }

    public int getCount() {
        return listOfCases.size();
    }

    public Object getItem(int position) {
        return listOfCases.get(position);
    }

    public long getItemId(int position) {
        return position;
    }

    public View getView(int position, View convertView, ViewGroup viewGroup) {
        MyCaseClass entry = listOfCases.get(position);

        if (convertView == null) {

            LayoutInflater inflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.mypage_row, null);


        }

        // this is row items..
        // Set the onClick Listener on this button
        Button ConfExpandRegion  = (Button) convertView.findViewById(R.id.expand);
        Button Cancelb = (Button) convertView.findViewById(R.id.cancelCase);
        TextView tvCase = (TextView) convertView.findViewById(R.id.mypage_name);

        //To be a clickable button
        ConfExpandRegion.setFocusableInTouchMode(false);
        ConfExpandRegion.setFocusable(false);
       //For Dialog
        AlertDialog alertDialog = new AlertDialog.Builder(MyCasesListAdapter.this);
       alertDialog.setTitle("Conformation");
       alertDialog.setMessage("Are you sure you want to do ???");
        ConfExpandRegion.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub
                    alertDialog.setButton("Yes", new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int which) {
                      // Some code

                       //ConfExpandRegion.setEnabled(false);
                   }

                });

                alertDialog.setButton2("No", new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int which) {
                    // here you can add functions
                    // Do nothing 




                   }
                });

                alertDialog.setIcon(android.R.drawable.ic_dialog_alert);
                alertDialog.show();




        }});

       //To be a clickable button
        Cancelb.setFocusableInTouchMode(false);
        Cancelb.setFocusable(false);
        Cancelb.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                // TODO Auto-generated method stub
                MyCaseClass entry = (MyCaseClass) v.getTag();
                listOfCases.remove(entry);
                // listPhonebook.remove(view.getId());
                notifyDataSetChanged();
            }
        });

        // Set the entry, so that you can capture which item was clicked and
        // then remove it
        // As an alternative, you can use the id/position of the item to capture
        // the item
        // that was clicked.
        ConfExpandRegion.setTag(entry);
        Cancelb.setTag(entry);


        // btnRemove.setId(position);


        return convertView;
    }

    public void onClick(View view) {
        MyCaseClass entry = (MyCaseClass) view.getTag();
        listOfCases.remove(entry);
        // listPhonebook.remove(view.getId());
        notifyDataSetChanged();

    }

    private void showDialog(MyCaseClass entry) {
        // Create and show your dialog
        // Depending on the Dialogs button clicks delete it or do nothing
    }

    public void add(MyCaseClass myCaseClass) {
        // TODO Auto-generated method stub
        listOfCases.add(myCaseClass);
    }






}

//================================================== ===========================

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;

public class MyPage extends Activity {

    Button createForm;
    Button ConfExpandRegion, Cancelb;
    String ExpandMsg, CancelMsg;
    boolean b;
    MyCaseClass mycase;
    TextView tvCase;
    AlertDialog alertDialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.mypage);


        // Moving to anther activity
        createForm = (Button) findViewById(R.id.creat_new_formbtn);
        createForm.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {

                Intent j = new Intent(MyPage.this, CreateNewForm.class);
                startActivity(j);

            }
        });

        // ============================================================================================
        // for list


            ListView list = (ListView) findViewById(R.id.mypage_list);
            list.setClickable(true);

            final List<MyCaseClass> listOfPhonebook = new ArrayList<MyCaseClass>();

            MyCasesListAdapter adapter = new MyCasesListAdapter(this, listOfPhonebook);

            for (MyCaseClass m : All_Static.getMyCaseList())
                adapter.add(new MyCaseClass(m));

            // after fill the adapter.. assign the list to the adapter
            list.setAdapter(adapter);

            list.setOnItemClickListener(new OnItemClickListener() {

                public void onItemClick(AdapterView<?> arg0, View view, int position, long index) {
                    System.out.println("sadsfsf");
                ;
                }
            });
            list.setAdapter(adapter);
        // ========================================================================================

    }



    public void sendSMS(String number, String msg) throws Exception {
        if (!b) {
            SmsManager smsManager = SmsManager.getDefault();
            smsManager.sendTextMessage(number, null, msg, null, null);
        }
        b = true;
    }

    // ========================================================================

}

当您在创建适配器时传递“this”作为参数时,您是否百分百确定您正在传递活动?

一种好的检查方法是像这样修改应用程序:

将 Activity 参数添加到您的适配器

private Context context;
private Activity parentActivity;
...
public MyCasesListAdapter(Context context, List<MyCaseClass> listPhonebook, Activity parentActivity) {         
    this.context = context;         
    this.listOfCases = listPhonebook; 
    this.parentActivity = parentActivity;    
} 

像这样创建警报对话框...

AlertDialog alertDialog = new AlertDialog.Builder(parentActivity);

最后,像这样调用适配器的构造函数......

MyCasesListAdapter adapter = new MyCasesListAdapter(this, listOfPhonebook, MyPage.this);   

说明:您可能不需要将 Activity 和 Context 传递给基本适配器,但我这样做只是为了让您可以暂时保留其他所有内容。我不确定当您实例化适配器时“this”是否实际上是一个活动。我在构造函数中将第三个参数定义为“Activity”,以强制您传入一个 Activity。如果您尝试传递不属于活动的内容,您将收到编译错误,因此它应该可以帮助您。

另外,我刚刚注意到,但问题可能是您更新的代码仍在尝试使用 MyCasesListAdapter.this 作为上下文创建 AlertDialog,这不是一个活动。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何让 BaseAdapter 显示 AlertDialog android 应用程序 的相关文章

  • 在 Netbeans 8 上配置 JBoss EAP 的问题

    我已经下载了 JBoss EAP 7 并正在 Netbeans 8 上配置它 我已经到达向导 实例属性 其中要求从选择框中选择 域 当我打开选择框时 它是空的 没有什么可以选择的 因此 完成 按钮也处于非活动状态 这使得无法完成配置 我通过
  • Java 8 流 - 合并共享相同 ID 的对象集合

    我有一系列发票 class Invoice int month BigDecimal amount 我想合并这些发票 这样我每个月都会收到一张发票 金额是本月发票金额的总和 例如 invoice 1 month 1 amount 1000
  • 很好地处理数据库约束错误

    再一次 它应该很简单 我的任务是在我们的应用程序的域对象中放置一个具有唯一约束的特定字段 这本身并不是一个很大的挑战 我刚刚做了以下事情 public class Location more fields Column unique tru
  • PhoneStateListener 不调用

    这是我的完整代码 广播示例 java package com example broadcast gt import android app Activity import gt android content Context import
  • react-native run-android 失败并出现错误:任务 ':app:dexDebug' 执行失败

    我使用的是 Windows 8 1 和react native cli 1 0 0 and react native 0 31 0 添加后react native maps对于该项目 我运行了命令react native upgrade并给
  • IntelliJ - 调试模式 - 在程序内存中搜索文本

    我正在与无证的第三方库合作 我知道有一定的String存储在库深处的某个字段中的某处 我可以预测的动态值 但我想从库的 API 中获取它 有没有一种方法可以通过以下方式进行搜索 类似于全文搜索 full程序内存处于调试模式并在某个断点处停止
  • 如何在 Viewpager 中禁用预加载下一页? [复制]

    这个问题在这里已经有答案了 如何在 Viewpager 中禁用页面预加载 I tried viewPager setOffscreenPageLimit 0 但它不起作用 用这个viewPager setOffscreenPageLimit
  • Struts 2 + Sitemesh 3 集成 - FreemarkerDecoratorServlet 中的 NPE

    我将 Struts 2 版本 2 3 14 3 与 Sitemesh 3 版本 3 0 alpha 2 一起使用 并且在某些情况下遇到 NullPointerException 首先 这是我的 web xml 中的 struts2 site
  • 哪些 Flutter 插件或功能可以利用外部 iOS/Android 显示器来显示与主显示器不同的内容

    我正在构建一个跨平台应用程序 需要在外部显示器上显示不同的视图 通常通过连接到 LCD 投影仪的 HDMI 适配器电缆连接 Flutter 是否能够在内置的外部显示器上显示不同的屏幕 在现有的 Flutter 插件中还是使用现有的 Flut
  • 按钮 - 单击时更改背景颜色

    我的活动中有 8 个按钮 我正在寻找的是 按钮具有默认背景 单击按钮时 背景颜色应更改为其他颜色 这部分非常简单 但是 当我单击任何其他按钮时 第一个按钮的背景颜色应该变回默认颜色 我知道这将使用 选择器状态 来完成 但我不太确定如何实现它
  • 替换后增量

    我自己已经有一个问题了 但我想扩展它后增量示例 https stackoverflow com questions 51308967 post increment with example char a D int b 5 System o
  • 将 Azure AD 高级自定义角色与 Spring Security 结合使用以进行基于角色的访问

    我创建了一个演示 Spring Boot 应用程序 我想在其中使用 AD 身份验证和授权 并使用 AD 和 Spring Security 查看 Azure 文档 我执行了以下操作 package com myapp contactdb c
  • 在Android Studio gradle项目中使用NDK和STL

    我在将 stlport 链接到 Android Studio 中的 gradle 项目时遇到问题 使用 NDK 的 Eclipse Android 项目迁移到 Android Studio 该项目使用 STL 我有包含内容的 android
  • Trie 数据结构 - Java [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 是否有任何库或文档 链接提供了在 java 中实现 Trie 数据结构的更多信息 任何帮助都会很棒 Thanks 你可以阅读Java特里树
  • ServletContainer 类未找到异常

    我无法再编译我的球衣项目 并且出现以下异常 GRAVE Servlet Project API threw load exception java lang ClassNotFoundException com sun jersey spi
  • Android 中带有组的列表视图

    我有一个列表视图 每行都有一些日期和文本 我可以像 iPhone 中那样将这个 listView 分组 组之间有标题吗 在 android 中是否可能 请帮忙 即 我需要在 Listview 行之间有标题栏 以便如果我使用日期对其进行分组
  • 如何在片段中实现 onBackPressed() 和意图?

    我知道 onBackPressed 是活动中的一种方法 但是 我想在片段中使用该功能 以便当按下后退按钮时 它会通过 Intent 重定向到另一个活动 有什么办法解决这个问题吗 public class News Events fragme
  • 调整添加的绘制组件的大小和奇怪的摆动行为

    这个问题困扰了我好几天 我正在制作一个特殊的绘画程序 我制作了一个 JPanel 并添加了使用 Paint 方法绘制的自定义 jComponent 问题是 每当我调整窗口大小时 所有添加的组件都会 消失 或者只是不绘制 因此我最终会得到一个
  • GUI Java 程序 - 绘图程序

    我一直试图找出我的代码有什么问题 这个想法是创建一个小的 Paint 程序并具有红色 绿色 蓝色和透明按钮 我拥有我能想到的让它工作的一切 但无法弄清楚代码有什么问题 该程序打开 然后立即关闭 import java awt import
  • Android 材料芯片组件崩溃应用程序。无法膨胀 xml

    Tried Chip来自两个支持库的组件 com google android support design 28 0 0 rc01和材料 com google android material material 1 0 0 rc01 堆栈

随机推荐

  • 实例集

    我正在尝试构建对象的一组实例 但是添加某些对象的实例会导致TypeError unhashable instance 这是一个最小的例子 from sets import Set import random from UserDict im
  • 如果给定条件,如何突出显示行表?

    我有一个 jtable 它由列组成 C No Borrower Market Loan Start Daily Expiry 如果当前日期距列内日期 5 天 如何突出显示表格行 expiry SimpleDateFormat sdf new
  • lua中定义逻辑运算符隐含

    print i j i j for i 0 1 do for j 0 1 do print i j i j end end 上面的代码在Lua中运行良好 它给出以下输出 i j i j 0 0 0 0 1 0 1 0 0 1 1 1 我想定
  • reinterpret_cast 派生类向量到基类向量

    我有一个第三方课程 比如说 课程A 以及接受类向量的函数A来自同一个第三方 比如说f3 参见下面的简化程序 为了更方便地使用A 我创建了一个派生类B 我的程序的很多部分都使用了类B 问题是我怎样才能打电话f3 向量为B作为它的论点 是在论证
  • SQL - 将所有用户合并到一张表中

    表 热门 UserName FriendName John Sarah Philip Ursula John Marry John Jeremy Philip Brock Khan Lemy 我想要带有查询的列表 John Philip K
  • 黑莓 - 裁剪图像

    我想裁剪图像的一部分 为此我使用以下代码 int x 20 int y 50 int rgbdata new int 0 width x height y image getWidth image getARGB rgbdata 0 ima
  • 如何在 C# 中执行按住 ALT+TAB 发送键事件

    我正在尝试使用按住 ALT 键然后按 TAB 键的 sendkey 事件 你如何执行这个动作 我尝试了很多变体 但我似乎找不到答案 谢谢 在经历了MSDN 文档页面我想出了这个 它似乎对我来说效果很好 SendKeys Send Tab
  • 从 fortran 调用 c++ sub 时运行时中止

    我在这里读过很多关于混合语言使用 Fortran 和 C 的文章 然而 我仍然遇到当前的问题 我的 Fortran 程序总是中止 我有 Fortran 程序 test cc f90 和 C 程序 deb cc cc deb cc cc 包含
  • Jenkins 中的失败管道

    我使用 Jenkins 为我的 Node js 应用程序创建了 CI 管道 我的管道包括构建 单元测试 集成测试 代码分析等作业 我想知道是否有可能使构建失败 例如通过实施像 z 失败的测试数量或通过率 您的单元测试脚本需要处理数学和逻辑
  • 是否有一种可实施(非理论)的方法来证明电子邮件地址是否属于真实的电子邮件帐户?

    有没有办法证明某个电子邮件地址是 真实的 因此属于真正存在的电子邮件帐户 我通过电子邮件获得了大量注册 根据电子邮件模式定义这些注册是有效的 但实际上并不存在 发送到假邮件地址需要花费很多钱 因为我们 和其他人 按每封邮件付费 100 00
  • 如何在 docker-compose 中传递参数?

    Docker 1 9 允许将参数传递给 dockerfile 参见链接 https docs docker com engine reference builder arg 如何在 docker compose yml 中传递相同的参数 如
  • 每个活动底部的通用按钮或选项卡

    我想在每个屏幕 活动的底部放置一些快捷方式或按钮 我知道我们可以通过使用框架布局 相对布局 选项卡小部件等来做到这一点 既然我的每个活动都需要它 我是否需要一次又一次地为每个活动和按钮操作编写 XML 布局 是否可以引用按钮单击等的布局和操
  • 如何更改 NetBeans 中 HAML 标签的颜色?

    我在 NetBeans 6 8 中使用 Aloha 主题 除了 HAML 文件中的这些蓝色标签不可读之外 一切看起来都很酷 如何找到可以改变这种蓝色的地方 附 我使用的 HAML 插件似乎不受支持且缺乏功能 截屏 http img lepr
  • WebGL 深度纹理全白?

    我使用 chrome 中的 WEBGL depth texture 将场景渲染到具有颜色和深度纹理的帧缓冲区 当我显示我的颜色纹理时效果很好 但我的深度纹理是全白色的 不应该是灰色的吗 我的绘制纹理函数 this drawTexture f
  • unix 中的测试命令不打印输出

    为什么命令没有输出test 3 lt 6在unix终端上 测试不应该输出 0 或 1 吗 我做了一个男人测试 它说 退出并以 EXPRESSION 确定的状态退出 退出状态不会打印出来 只是返回 你可以测试一下if or while 例如
  • 时间:2019-03-17 标签:c#castingwithisandas

    我需要一些帮助 这很容易 我有这段代码 我想讨论一下它是否正确 或者您是否建议更好的方法 我对答案有一个想法 但我想看看你的答案 就这样 if myObject is ClassA var myObjectA myObject as Cla
  • LINQ to SQL 执行时间比 SSMS SQL 长 50 倍

    我有一个使用 Linq to SQL 的 asp net 应用程序 应用程序的一项查询超时 执行时间超过 30 秒 我增加了 DataContext 的 CommandTimeout 它确实在 45 秒内完成 我将 Linq to SQL
  • 在 Android Studio 中选择项目模板后不显示语言选项

    Android Studio 中的 新建项目 向导未显示 语言 选项 我想使用 Java 但它迫使我使用 Kotlin 我希望使用 Java 进行 Android 开发 如何制作 Java 项目 您已选择了一个Jetpack 组合项目模板
  • 如何让 java 日志输出显示在一行上?

    目前 默认条目如下所示 Oct 12 2008 9 45 18 AM myClassInfoHere INFO MyLogMessageHere 我怎样才能让它做到这一点 Oct 12 2008 9 45 18 AM myClassInfo
  • 如何让 BaseAdapter 显示 AlertDialog android 应用程序

    如何使 listView 中的 BaseAdapter 中的按钮显示alertDialog 我尝试过 但它意外停止工作 运行时错误 我的代码如下所示 任何建议 提前致谢 莫内拉 更新后 import java util List impor