【问题标题】:how to get the separate contact name array list and contact number array list from the device如何从设备中获取单独的联系人姓名数组列表和联系人号码数组列表
【发布时间】:2015-12-03 11:13:14
【问题描述】:
   ArrayList<String> contacts_list = new ArrayList<String>();

        Cursor c = getContentResolver().query(
                ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
                null, null, null);
        while (c.moveToNext()) {

            contactName = c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
            PhoneNumber = c
                    .getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

            contacts_list.add("ContactName:"+contactName + "\n" +"ContactNumber:"+PhoneNumber );

        }

        c.close();

在上面的代码中,获取姓名和电话号码,但不分离联系人号码和姓名的arraylist

【问题讨论】:

  • Android Contact List的可能重复
  • 请简单写代码
  • 还将联系人姓名和号码传递给 post 方法到服务
  • 正在添加contacts_list.add(contactName);联系人列表。添加(电话号码);但返回结果应该是姓名和电话号码
  • 制作一个自定义的 pojo 类,通过制作它的arraylist,你可以实现你想要的

标签: java android


【解决方案1】:

创建两个列表

 ArrayList<String> contacts_name = new ArrayList<String>();
 ArrayList<String> contacts_number = new ArrayList<String>();

        Cursor c = getContentResolver().query(
                ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
                null, null, null);
        while (c.moveToNext()) {

            contactName = c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
            PhoneNumber = c
                    .getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

            contacts_name.add("ContactName:"+contactName);
            contacts_number.add("ContactNumber:"+PhoneNumber );

        }

        c.close();

【讨论】:

  • 我应该返回哪个值我想在 doInBackground 中返回两个值
  • 你想做什么请解释一下
  • 通过上面的代码获取两个数组列表中的姓名和电话号码,但是我返回的数组列表两个数组列表都可能为异步任务返回
【解决方案2】:

创建一个这样的类

public class NameContact {

private String name;
private String contact;

public NameContact(String name, String contact) {
    this.name = name;
    this.contact = contact;
}

public String getName() {
    return name;
}

public String getContact() {
    return contact;
}
}

然后创建一个数组列表并在其中添加项目..

ArrayList<NameContact> abc = new ArrayList<NameContact>();
abc.add(new NameContact("your_name","your_contact"));

然后在放入RequestParams之后使用这个

RequestParams params = new RequestParams();
JSONArray arrayName = new JSONArray();
JSONArray arrayContact = new JSONArray();

for(i = 0;i < contacts.size();i++ ) {
    arrayName.put(contacts.get(i).getName());
    arrayContact.put(contacts.get(i).getContact());    
}
params.put("ContactNameArray",arrayName);
params.put("ContactNumberArray",arrayContact);

【讨论】:

  • 将 AsyncTask (doInBackground) 的返回类型更改为 ArrayList
  • 你有没有得到解决方案?
  • 没有再向请求参数传递值的数组列表
  • 再获取一个数组值就可以了,再一个将这些数组值传递给请求参数
  • 我无法得到你想要的东西。?
【解决方案3】:

你应该去 pojo 类,或者现在你可以使用这个:

Arraylist<HashMap<String,String>> arr_list=new Arraylist<HashMap<String,String>>();

  arr_list.clear();

        Cursor c=getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null, null, null);

while (c.moveToNext()) {

        contactName = c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
        PhoneNumber = c
                .getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

       HashMap<String,String> map=new HashMap<String,String>();
   map.put("name",""+contactName);
   map.put("number",""+PhoneNumber);    
   arr_list.add(map);   
    }

    c.close();

Log.d("array","arr="+arr_list);

你将有两个键和值,数组的位置你可以得到单独的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-22
    • 2020-04-04
    • 2011-09-13
    • 1970-01-01
    • 2021-01-06
    相关资源
    最近更新 更多