长按listview弹出选项列表对话框

时间:2021-06-25 00:57:52

Android中通过xml资源文件定义数组。来自微风的网络日志。

文章链接:http://leybreeze.com/blog/?p=1524

Android ListView两种长按弹出菜单方式

http://www.eoeandroid.com/thread-173294-1-1.html

完全自定义Android对话框AlertDialog的实现

在values目录下创建arrays.xml文件。


Builder android.app.AlertDialog.Builder.setItems(int itemsId, OnClickListener listener)

Set a list of items to be displayed in the dialog as the content, you will be notified of the selected item via the supplied listener. This should be an array type i.e. R.array.foo

Returns: This Builder object to allow for chaining of calls to set methods


Activity实现接口AdapterView.OnItemLongClickListener。

listView设置Listener。

mListView.setOnItemLongClickListener(this);

Activity实现接口方法onItemLongClick。

public boolean onItemLongClick(AdapterView<?> parent, View view,
        int position, long id) {
    AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
    TxrjThreads thread = mThreads.get(position);
    builder.setTitle(thread.getName());
    builder.setItems(R.array.thread_menu, new DialogInterface.OnClickListener() {
       
        @Override
        public void onClick(DialogInterface dialog, int which) {
           
        }
    });
    builder.show();
    return false;
}

在values/arrays.xml文件中定义thread_menu字符串数组。

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="thread_menu">
        <item >Call</item>
        <item >Edit And Call</item>
        <item >Remove</item>
    </string-array>
</resources>

在代码中获取数组内容。

String[] sa = getResources().getStringArray(R.array.thread_menu);

如果是多选,那么就将代码中蓝色部分替换为以下代码判断。

boolean[] checkedItems = {true, false, true};
builder.setMultiChoiceItems(R.array.thread_menu, checkedItems,
        new DialogInterface.OnMultiChoiceClickListener() {
   
    @Override
    public void onClick(DialogInterface dialog, int which, boolean isChecked) {
    }
});

实现:拨号,拨号前编辑,删除会话。

当删除会话成功之后,contentObserver会观察到数据发生变化,然后会自动更新UI。

builder.setItems(R.array.thread_menu, new DialogInterface.OnClickListener() {
   
    @Override
    public void onClick(DialogInterface dialog, int which) {
        switch(which){
        case TxrjConstant.MENU_THREAD_CALL:
            Intent itCall = new Intent(Intent.ACTION_CALL,
                    Uri.parse("tel:" + thread.getNumber()));
            startActivity(itCall);
            break;
        case TxrjConstant.MENU_THREAD_EDIT_AND_CALL:
            Intent itDial = new Intent(Intent.ACTION_DIAL,
                    Uri.parse("tel:" + thread.getNumber()));
            startActivity(itDial);
            break;
        case TxrjConstant.MENU_THREAD_REMOVE:
            getContentResolver().delete(Sms.CONTENT_URI,
                    "thread_id="+thread.getThreadId(), null);
            break;
        }
    }
});

拨号时出现错误,需要添加权限。
07-19 12:03:16.395: E/AndroidRuntime(5557): java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.CALL dat=tel:xxxxxxxx cmp=com.android.phone/.OutgoingCallBroadcaster } from ProcessRecord{41744578 5557:com.txrj.sms/10110} (pid=5557, uid=10110) requires android.permission.CALL_PHONE

在Manifest.xml文件中添加授权即可。

<uses-permission android:name="android.permission.CALL_PHONE" />

在删除会话之前需要确定一下,避免误删操作发生。

确认对话框使用自定义的ConfirmActivity。在跳转之前设置message。

case TxrjConstant.MENU_THREAD_REMOVE:
    Intent itRemove = new Intent(mContext, ConfirmActivity.class);
    itRemove.putExtra("message", "delete conversation?");
    startActivityForResult(itRemove, TxrjConstant.REQUEST_REMOVE_THREAD);
    break;
}

在onActivityResult()方法中处理删除操作。

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode == TxrjConstant.REQUEST_REMOVE_THREAD &&
            resultCode == RESULT_OK) {
        getContentResolver().delete(Sms.CONTENT_URI,
                "thread_id="+curThread.getThreadId(), null);
    }
}


将对话框标题居中,以及修改对话框编辑的背景颜色。

参考:自定义 Android 对话框 (AlertDialog) 的样式

http://www.open-open.com/lib/view/open1325635738437.html

长按listview弹出选项列表对话框

长按listview弹出选项列表对话框的更多相关文章

  1. Android弹出选项框及指示箭头动画选择

     Android弹出选项框及指示箭头动画选择 Android原生的Spinner提供了下拉列表选项框,但在一些流行的APP中,原生的Spinner似乎不太受待见,而通常会有下图所示的下拉列表选项框 ...

  2. 通过编写串口助手工具学习MFC过程--&lpar;十一&rpar;弹出模态型对话框

    通过编写串口助手工具学习MFC过程 因为以前也做过几次MFC的编程,每次都是项目完成时,MFC基本操作清楚了,但是过好长时间不再接触MFC的项目,再次做MFC的项目时,又要从头开始熟悉.这次通过做一个 ...

  3. 20151124001 关闭C&num;主窗体弹出是否关闭对话框

    关闭C#主窗体弹出是否关闭对话框 private void Frm_Main_FormClosing(object sender, FormClosingEventArgs e)        {   ...

  4. 解决win10打开组策略弹出管理模板对话框问题

    今天win10企业版更新完系统,打开组策略编辑器时弹出管理模板对话框问题 1.问题描述 打开组策略编辑器时弹出管理模板对话框问题 2.解决方法 1)window+x 打开命令提示符(管理员) 2)输入 ...

  5. 如何弹出QQ临时对话框实现不添加好友在线交谈效果

    如何不添加好友弹出QQ临时对话框实现在线交谈效果,这样的一个需求,我们真的是太需要了,实现起来也很简单,一行代码即可搞定,需要的朋友可以参考下 其实这个很简单,在img我们加入一个a标签,然后 &lt ...

  6. 在使用Ajax请求返回json数据的时候IE浏览器弹出下载保存对话框的解决方法

    在使用Ajax请求返回json数据的时候IE浏览器弹出下载保存对话框的解决方法 最近在做一个小东西,使用kindeditor上传图片的时候,自己写了一个上传的方法,按照协议规则通过ajax返回json ...

  7. 【转】js弹出框、对话框、提示框、弹窗总结

    js弹出框.对话框.提示框.弹窗总结 一.js的三种最常见的对话框 //====================== JS最常用三种弹出对话框 ======================== //弹 ...

  8. js js弹出框、对话框、提示框、弹窗总结

    js弹出框.对话框.提示框.弹窗总结 一.JS的三种最常见的对话框 //====================== JS最常用三种弹出对话框 ======================== //弹 ...

  9. C&num;编程中&comma;在页面上如何弹出确认删除对话框

    对于页面完成一个操作后,弹出一个对话框提示是否“操作成功”.举例如下:Response.Write("<script>alert('删除成功!')</script>& ...

随机推荐

  1. C&num;对Dictionary的按Value排序

    使用List对其进行排序 using System; using System.Collections.Generic; using System.Text; namespace ConsoleApp ...

  2. mvc 4 razor语法讲解和使用

    1.这里的  @{Layout="文件路径";}  代码块指定了整个项目默认所使用的布局文件(如图:) @RenderBody()对于所有的页面默认的情况下都会使用这个布局(Web ...

  3. mysql安装出现error Nr&period;1045 &lpar;转&rpar;

    http://www.cnblogs.com/Ivan-j2ee/archive/2012/09/22/2698278.html 我们在windows下安装mysql时会出现Access denied ...

  4. 简单易懂的现代魔法&mdash&semi;&mdash&semi;Play Framework攻略2

    接前文:http://www.cnblogs.com/Kassadin/p/4335908.html 上次讲到Play Framework开发环境的配置,以及第一个Hello World程序:本次主要 ...

  5. &lbrack;codevs1287&rsqb;矩阵乘法

    题目描述 Description 小明最近在为线性代数而头疼,线性代数确实很抽象(也很无聊),可惜他的老师正在讲这矩阵乘法这一段内容.当然,小明上课打瞌睡也没问题,但线性代数的习题可是很可怕的.小明希 ...

  6. shell-2

    环境变量配置文件: cd ~  直接回到根目录 位置变量:$0 代表当前执行的文件名$1-$9 代表输入的参数分别一次${10} 注意:双引号和单引号双引号是弱引用,会解析里面的特殊字符所代表的含义单 ...

  7. poj 3678&lpar;SCC&plus;2-SAT&rpar;

    传送门:Problem 3678 https://www.cnblogs.com/violet-acmer/p/9769406.html 难点: 题意理解+构图 题意: 有n个点 v[0,2..... ...

  8. 【python007 -分支和循环】

    一.打飞机游戏的实现逻辑: 加载背景音乐 播放背景音乐(设置单曲循环) 我方飞机诞生 interval = 0  #小飞机没诞生一个就会移动一个位置,那这样的话,会在屏幕出现密密麻麻的飞机,所以要加一 ...

  9. JSP创建用户验证的实例

    1 显示中文的代码编码解决办法: <%@ page language="java" import="java.util.*" pageEncoding=& ...

  10. 洛谷P1195口袋的天空

    传送门啦 一个裸的最小生成树,输出 $ No Answer $ 的情况只有 $ k < n $ 的时候. 开始令 $ num =n $ ,如果 $ num = k $ ,直接输出 $ 0 $ , ...