如何拆分这两个对象字符串,以便我可以放入数据库

时间:2013-04-03 18:28:06

标签: java android string object split

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();
}

我从联系人处获取电话号码和姓名。我必须对每个对象进行字符串化以将其传递给我的列表视图(多次检查)。现在我选择多个选项,我想再次将两者分开(联系人姓名和与之关联的电话号码),这样我就可以将它们放入我的数据库中的单独列中。一旦它是数组适配器中的字符串,我怎么能将它们分开?

2 个答案:

答案 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