while (pCur.moveToNext()) {
String phone = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
String pon = name ;
System.out.println("phone" + phone + name);
listItems.add(pon + phone) ;
adapter.notifyDataSetChanged();
}
我从联系人处获取电话号码和姓名。我必须对每个对象进行字符串化以将其传递给我的列表视图(多次检查)。现在我选择多个选项,我想再次将两者分开(联系人姓名和与之关联的电话号码),这样我就可以将它们放入我的数据库中的单独列中。一旦它是数组适配器中的字符串,我怎么能将它们分开?
答案 0 :(得分:0)
如何分割这两个对象字符串,以便我可以将其放入数据库
好。可能在您的ListView中,您将数据格式化为(还可以确保特定格式,以便将来更轻松地工作)。
John 23459395
现在,当您从ListView
中选择项目时,您可以访问这些项目并将其保存到临时列表中。然后,您可以使用 split()方法分割列表中的每个项目。
List<String> selectedItems = new ArrayList<String>();
// selection from ListView
String[] temp;
for (String s: selectedItems) {
temp = s.split(" "); // or other regex based on format of source
// insert into db
}
但这取决于来源的格式。
您可以改进的实际方法。看,现在您从Cursor
我建议您创建一个名为User
的自己的类,它将具有属性名称,phonenumber等。然后创建ArrayList<User>()
并将其设置为ListAdapter的数据源。
如果您使用自己实现的Adapter子类,我现在不会。如果没有,则需要覆盖User类中的toString()
方法以获取User的正确字符串表示。
答案 1 :(得分:0)
在名称和手机之间使用字符串,然后使用该字符串再次拆分。
代码示例
while (pCur.moveToNext()) {
String phone = pCur.getString(pCur.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
String pon = name ;
System.out.println("phone" + phone + name);
/* Following code changed here...Hoping that "!@#$" doesnt exists in pon or phone data. Or you can replace it with some other string which will not come in these objects. */
listItems.add(pon +"!@#$"+ phone) ;
adapter.notifyDataSetChanged();
}
如何检索和拆分:样本方法
ArrayList<String> listItems = new ArrayList<String>();
listItems.add("Joseph!@#$325625123");
listItems.add("John!@#$5214252142");
for (String strData : listItems)
{
int index = strData.indexOf("!@#$");
if (index > -1)
{
String name = strData.substring(0, index);
String phone = strData.substring(index + 4);// 4 is the length of the substitute string
System.out.println(name + ", " + phone);
// Code to insert name and phone database
}
}
以上方法的结果如下
Joseph,325625123
John,5214252142