android-Android如何获取listview里面的选取的数据

问题描述

Android如何获取listview里面的选取的数据

需要在lv1.setOnItemLongClickListener方法中加入一个长按获取电话号码,联系人的代码,我写的代码总感觉有错误,但是不知道错在哪,我尝试用system输出我获取的数值,数值是对的,但是传不到打电话和发短信的地方


这是效果图

package com.example.lianxi;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.zip.Inflater;

import android.R.string;
import android.app.Activity;
import android.app.ActionBar;
import android.app.Fragment;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.ContextMenu.ContextMenuInfo;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import android.os.Build;

public class M1 extends Activity {
private ListView lv1;
private int[] pic = new int[] { R.drawable.img01, R.drawable.img02,
R.drawable.img03, R.drawable.img04, };
private String[] xm = new String[] { "张三", "李四", "王五", "赵六" };
private String[] dh = new String[] { "626746", "624882", "620874",
"130533", };
String s = "";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.m1);
    lv1 = (ListView) findViewById(R.id.lv1);
    final List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
    for (int i = 0; i < pic.length; i++) {
        Map<String, Object> m1 = new HashMap<String, Object>();
        m1.put("pic", pic[i]);
        m1.put("xm", xm[i]);
        m1.put("dh", dh[i]);
        list.add(m1);
    }
    SimpleAdapter sa = new SimpleAdapter(M1.this, list, R.layout.moban,
            new String[] { "pic", "xm", "dh" }, new int[] { R.id.iv1,
                    R.id.tv1, R.id.tv2 });
    lv1.setAdapter(sa);

    lv1.setOnItemLongClickListener(new OnItemLongClickListener() {

        @Override
        public boolean onItemLongClick(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            HashMap<String, Object> map = (HashMap<String, Object>) lv1
                    .getItemAtPosition(arg2);
            String xm = String.valueOf(map.get("xm").toString());
            String dh = String.valueOf(map.get("dh").toString());

            System.out.println(xm);
            System.out.println(dh);
            return false;
        }
    });
    registerForContextMenu(lv1);
}

@Override
public void onCreateContextMenu(ContextMenu menu, View v,
        ContextMenuInfo menuInfo) {
    // TODO Auto-generated method stub
    MenuInflater m1 = new MenuInflater(M1.this);
    m1.inflate(R.menu.m1, menu);
    menu.setHeaderIcon(R.drawable.i);
    menu.setHeaderTitle("请选择");
    super.onCreateContextMenu(menu, v, menuInfo);
}

@Override
public boolean onContextItemSelected(MenuItem item) {
    // TODO Auto-generated method stub
    switch (item.getItemId()) {
    case R.id.dh:
        Intent intent = new Intent();
        intent.setAction(intent.ACTION_CALL);
        intent.setData(Uri.parse("tel:" + dh));
        startActivity(intent);
        break;
    case R.id.dx:
        Intent intent1 = new Intent();
        intent1.setAction(intent1.ACTION_SENDTO);
        intent1.setData(Uri.parse("smsto:" + dh));
        intent1.putExtra("sms_body", "");
        startActivity(intent1);
        break;
    }
    return super.onContextItemSelected(item);
}

}

解决方案

因为你在setData时候用的dh引用的是一个String数组啊,不是你要的选取的电话号码,你应该在长按事件里面把那个dh改一下名然后定义成全局变量,然后再在setData里面使用这个电话号就行了~

解决方案二:

Android中ListView动态加载数据

解决方案三:

intent.setData(Uri.parse("tel:" + dh)); 和intent1.setData(Uri.parse("smsto:" + dh)); 里面的dh并不是全局变量啊,你使用它是有问题的,应该把它定义成全局变量的

解决方案四:

你把dh定义在匿名内部类里,这样它只是个局部变量,只能在当前有效,你应该把dh定义成全局变量,而且在Android打印信息也不用System,推荐用Log来打印测试...

解决方案五:

你这样写没报错。。。。。

解决方案六:

参考:

 http://www.cnblogs.com/nikyxxx/archive/2012/11/16/2773541.html

解决方案七:

利用适配器来控制listview中的数据

解决方案八:

因为你在setData时候用的dh引用的是一个String数组啊,不是你要的选取的电话号码,你应该在长按事件里面把那个dh改一下名然后定义成全局变量,然后再在setData里面使用这个电话号就行了~

解决方案九:

1.Adapter控制ListView显示的数据;
2.OnItemLongClickListener根据点击的位置(Position)获取对应Item数据内容(getItem(int position));
3.根据getItem返回的内容,取出对应的联系人代码、号码。

解决方案十:

这样写不会报错吗,你看看你打电话时的那个dh是什么东西

时间: 2024-09-10 00:51:25

android-Android如何获取listview里面的选取的数据的相关文章

android getActivity.findViewById获取ListView 返回NULL的方法_Android

在控件ID正确的情况下,检查是否在实例化布局文件之后,获取LISTVIEW, 先inflate找layout下布局文件,并实例化后才能获得Listview的ID demo: public class FragmentPage extends Fragment { View view = null; @Override @SuppressLint("HandlerLeak") public View onCreateView(LayoutInflater inflater, ViewGr

Android如何扫描获取二维码中的数据?

问题描述 Android如何扫描获取二维码中的数据? 我首先做了一个二维码名片,把信息输入进去以后生成了一个二维码,现在需要通过扫描这个二维码获取里面的信息中的电话号码信息,然后是一个发短信的过程.现在的问题就是如何扫描获得这个电话号码? 解决方案 参考:http://www.cnblogs.com/weixing/archive/2013/08/28/3287120.html 解决方案二: 建议你使用ZXing框架 解决方案三: android 二维码 扫描cocos2dx android 二

C#请问如何获取ListView中指定单元格数据

问题描述 c#vs2010webform请问如何获取ListView1中第5列,第2行的数据?谢谢! 解决方案 解决方案二:listview1.items[1].subitems[4]解决方案三:学习了!~~~解决方案四:引用1楼caozhy的回复: listview1.items[1].subitems[4] 你好,是webform,不是windowsform,麻烦您可以再回复一下吗

关于android动态获取listview高度的问题

问题描述 关于android动态获取listview高度的问题 最近在拿一个聊天机器人的对话板块来练手,用到了一个listview动态设定高度的问题.结果改了很多时候仍有一个bug:当scrollview开始翻页之后,每次的发送在下面都会有一段空白.当发送的消息多了之后,下面明显会多出一段空白区. 我用setenable(true)试过,点不了,所以应该不是多出来的item,但是也不知道是什么,但应该是高度获取错误,可是代码也是网上通用的,求指导,求修改,赋源代码. 谢谢.

Android 获取listview数据 然后赋值给popupwindow用于显示报空指针

问题描述 Android 获取listview数据 然后赋值给popupwindow用于显示报空指针 能得到数据但是给Textview赋值却报空指针! 下边贴代码. gv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { // WindowManager.La

Android逐条加载ListView,实现动画更新

在Android应用中,如果ListView或是GridView里面的数据比较多的时候,加载会比较费时间,特别是里面有图片的时候,需要花费的时间就更长,这样就会出现一个长时间的等待黑屏界面,这样有时会给用户造成一种错觉,就是这个程序已经"死"了,,, 对于这个问题可以的一个方法是,添加一个ProgressDialog,显示正在处理的窗口,等待加载完之后再关闭这个窗口, 但是这样等所有的数据加载完之后,就是特别突然的显示, 这样用户体验也不佳, 以前看Android优化大师的时候,打开进

Android开发:优化ListView实践解析

 在看了一些vogella的文章之后,发现关于android listview性能优化这一段很有意思,于是实践了一下,经过优化,性能确实提升不少! 先看看优化前和优化后的比较: 优化前的log截图: 开发:优化ListView实践解析-"> 优化后的log截图: 并且,在不停滚动ListView的过程中,优化之前会出现ANR现象,在AVD上特别容易复现: 然后,优化后显得很流畅,附上对于的log截图: 下面附上相关代码分析: ListView中的每一个Item由一个ImageView 和一

Android API 中文 (42) —— ListView

前言 关键字:Android API 中文 , Android 中文 API , android.widget.ListView 本章内容是 android.widget.ListView,译为"列表视图",版本为Android 2.2 r1,翻译来自"Tina",这是翻译组至今独立完成翻译最长的一篇 ,再次感谢"Tina"为大家带来优质的翻译稿 !期待你一起参与Android API 的中文翻译,联系我over140@gmail.com.  

【android】怎么定位listview中的某一项item呢

问题描述 [android]怎么定位listview中的某一项item呢 布局是PullToRefreshScrollView里面包含一个ListView,该怎么定位listview中的某一项item呢下面贴出一段代码@Override protected void onPostExecute(InterestThemeReplyBean result) { if (result != null) { pageCount = result.getPageCount(); if (actionFl