【问题标题】:Sorting the mobile number with countrycode alone仅使用国家代码对手机号码进行排序
【发布时间】:2020-12-26 03:06:26
【问题描述】:

我有联系电话列表屏幕。我将这些联系人存储在 SQLite 数据库中并从中显示。

我需要过滤仅包含国家代码的手机号码。当用户使用前缀“0”和不带前缀“0”保存相同的号码时。例如 - +919876543211, 09876543211, 9876543211。当用户像示例一样保存时,我只需要显示带有国家代码的手机号码。

如果用户只保存手机号码需要单独显示或带有前缀“0”表示需要单独显示。

for(int i=0; i < arrayListContact.size()-1; i++){
   if(arrayListContact.get(i).getContact().startsWith("+")){
      plusArrayList.add(arrayListContact.get(i));
   } else if(arrayListContact.get(i).getContact().startsWith("0")){
      zeroArrayList.add(arrayListContact.get(i));
   } else {
      mobileArrayList.add(arrayListContact.get(i));
   }
}

 tempArrayList.addAll(plusArrayList);

for(int i=0; i < tempArrayList.size()-1; i++){
  String mobile = tempArrayList.get(i).getContact();
  String mobileWithout = getMobileNumberAlone(mobile);

for (int j = 0; j < zeroArrayList.size() - 1; j++) {
  if(!zeroArrayList.get(j).getContact().equals("0" + mobileWithout)){
     tempArrayList.add(zeroArrayList.get(j));
  }
}
}

我将 tempArrayList 传递给适配器。但在下面的循环中,它正在无限循环。

【问题讨论】:

    标签: java android sorting for-loop arraylist


    【解决方案1】:

    在您的第二个循环中,您将添加到循环数组中,因此循环永远不会结束:

    for(int i=0; i < tempArrayList.size()-1; i++)  // always uses latest array size
    {
      String mobile = tempArrayList.get(i).getContact();
      String mobileWithout = getMobileNumberAlone(mobile);
    
      for (int j = 0; j < zeroArrayList.size() - 1; j++) 
      {
        if(!zeroArrayList.get(j).getContact().equals("0" + mobileWithout))
           { tempArrayList.add(zeroArrayList.get(j)); }  // adding to array, infinite loop
      }
    }
    

    试试这个:

    int tmplen = tempArrayList.size();  // starting size, never changes
    for(int i=0; i < tmplen-1; i++)
    ......
    

    【讨论】:

      猜你喜欢
      • 2016-10-12
      • 1970-01-01
      • 2021-11-23
      • 1970-01-01
      • 2013-12-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-26
      相关资源
      最近更新 更多