将List <string>项与String </string>进行比较

时间:2012-11-15 11:47:02

标签: android list compare

我使用以下代码获取DB值:

public List<String> getPlayerNames() {
        List<String> playerNames = new ArrayList<String>();
        c = myDataBase.rawQuery("SELECT * FROM PLAYERS",null);
        while (c.moveToNext()) {

            String q = c.getString(1);
            playerNames.add(q);

        }
        c.close();
        myDataBase.close();
        return playerNames;

    }

我现在想用以下方法将此List中的项目与String值进行比较:

private boolean checkIfExists(String newPlayer) {
        // TODO Auto-generated method stub

        List<String> playerNames = myDbHelper.getPlayerNames();
        //here a loop?! 

        return false;
    }

但我真的不知道如何将这些列表项与字符串值进行比较。我尝试使用for循环,但是再一次,列表不支持.length()方法通过所有元素? TNX!

5 个答案:

答案 0 :(得分:3)

for(String playerName : playerNames){
  if(playerName.equals(newPlayer)){
    return true;
  }
}
return false;

答案 1 :(得分:2)

for (String playerName : playerNames) {
   if (playerName.equals(newPlayer)) {
       // do something
   }
}

您可能需要equalsIgnoreCase()而不是equals()

答案 2 :(得分:2)

是的,会有一个如下所示的循环

for(String str : players)
{
    if (str.equalsIgnoreCase(newPlayer))
    { 
      return true; 
    } 
}
return false;

答案 3 :(得分:1)

避免区分大小写的字符串出现问题

for(String playerName : playerNames){
  if(playerName.equalsIgnoreCase(newPlayer)){
    return true;
  }
}

答案 4 :(得分:1)

到目前为止答案很好。这是其中一种&#34;另一种做法&#34;完整性的解决方案。

您可以考虑使用Set。

public Set<String> getPlayerNames() {
    TreeSet<String> playerNames = new TreeSet<String>(String.CASE_INSENSITIVE_ORDER); 

然后使用

if (playerNames.contains(newPlayer)){}

即使在运行时如果有意义,也很容易控制集合的区分大小写。

[编辑]

那就是说,你的问题可能是&#34;设计一个让我创建,删除和修改玩家的应用程序的正确方法是什么,其详细信息存储在SQLite数据库中?& #34 ;.你没有提出这个问题,但无论如何我都会回答这个问题,因为在这之前应该问过这个问题。

花一些时间用谷歌搜索&#34;软件设计模式&#34;,尤其是MVC(模型视图控制器)。 MVC是许多Android应用程序中使用的标准模式。模型是您想要与之合作的真实世界数据(玩家)。视图是应用程序,ListViews,TextViews等的界面。控制器(Java适配器)是将两者绑定在一起并控制如何将数据传递到UI以及如何将更改返回到数据中的内容。

此刻,你有一个身高约3英寸的小家伙站在你的左肩上说'#34;告诉我你有什么。我希望尽快在手机上看到这种情况。完成它并稍后找出错误&#34;。他也非常狡猾,很难被忽视。

如果你仔细观察,你会看到右肩上的另一个小家伙说&#34;先把设计弄好。然后开始构建应用程序。我不介意等一会儿,因为最终结果会更好&#34;。这个家伙用更安静的声音说话,而且往往不是很自信。

你的工作就是放火焚烧左边的那个人,让他逃跑并喂Ben和Jerrys&#39; Phish Food冰淇淋给右边的那个人,让他四处闲逛,给你更好的建议。

所以让我们听一下右边的那个人:

&#34;马蒂亚斯,有很多方法可以解决这个问题,但在你学习的过程中,让我们坚持使用共同的方法。这样,Google就可以轻松找到拼凑它们所需的各个组件。

您已经拥有一个包含Players表的数据库,该表包含有关玩家的数据。让我们在代码中创建一个代表玩家的类。

public class Player{
      public int id;
      public String name;
      public Boolean likesPhishFood;
}

现在,当我们启动应用程序时,我们可以将表中的数据加载到我们的应用程序中,以便可以开始使用它。如何使用适配器?然后我们可以使用Cursor查询我们可以用来创建适配器的数据库,也许是SimpleCursorAdapter,然后最终将我们的适配器绑定到ListView。稍后,您可以添加onClickListener和onLongClickListener,以便在用户单击列表中的播放器时执行某些操作。

所有这一切的优势在于,您的代码毫无疑问最终会在更短的时间内生成您的应用;会更容易阅读;将会有更少的错误,也许最重要的是,将更容易改变。

我几乎可以保证,在某些时候,通常大约一半,你会想要添加一些关于播放器的数据。也许是他们玩过的次数,或者他们有蓝眼睛。使用MVC设计,这些更改更容易实现,并且不太容易产生新的错误,而不是挖掘代码寻找ArrayLists以及需要更改以适应新数据的循环。

当然,在你的应用程序准备好看之前会花费你更多的时间,但是你在学习过程中学到的东西会多次回报投资 - 在这个应用程序和你将来做的其他应用程序中。 &#34;

听听右边的那个人。他讲的是感觉。

http://www.mysamplecode.com/2012/07/android-listview-cursoradapter-sqlite.html

祝你好运。

相关问题