我用以下代码获取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;
}
我现在想用以下方法将列表中的项目与字符串值进行比较:
private boolean checkIfExists(String newPlayer) {
// TODO Auto-generated method stub
List<String> playerNames = myDbHelper.getPlayerNames();
//here a loop?!
return false;
}
但我真的不知道如何将这些列表项与字符串值进行比较。我尝试了一个for循环,但再一次,列表不支持.length()方法来遍历所有元素?Tnx!
for(String playerName : playerNames){
if(playerName.equals(newPlayer)){
return true;
}
}
return false;
for (String playerName : playerNames) {
if (playerName.equals(newPlayer)) {
// do something
}
}
您可能想要equalsIgnoreCase()
而不是equals()
是的,下面会有一个类似的循环
for(String str : players)
{
if (str.equalsIgnoreCase(newPlayer))
{
return true;
}
}
return false;
为了避免区分大小写的字符串的问题
for(String playerName : playerNames){
if(playerName.equalsIgnoreCase(newPlayer)){
return true;
}
}
到目前为止答案不错。这是一种"另一种方式"的完整性解决方案。
你可以考虑使用Set。
public Set<String> getPlayerNames() {
TreeSet<String> playerNames = new TreeSet<String>(String.CASE_INSENSITIVE_ORDER);
然后使用
if (playerNames.contains(newPlayer)){}
这样就可以很容易地控制集合的大小写敏感性,即使在运行时也是如此。
[编辑]
也就是说,你的问题可能是"设计一个应用程序的正确方法是什么,让我来创建、删除和修改播放器,其详细信息存储在SQLite数据库中?"。你没有问那个问题,但我无论如何都会回答,因为这个问题应该在这个问题之前问。
花点时间在谷歌上搜索"软件设计模式",尤其是MVC(模型-视图-控制器)。MVC是许多Android应用程序中使用的标准模式。模型是您想要与(玩家)合作的真实世界数据。视图是应用程序、ListViews、TextViews等的接口。控制器(Java适配器)是将两者绑定在一起的东西,控制如何将数据传递到UI以及如何将更改返回到数据中。
现在,你有一个大约3英寸高的小家伙,站在你的左肩上说:"给我看看你有什么。我想尽快看到这个在我的手机上运行。完成它,稍后再找出漏洞"。他也很粗鲁,很难被忽视。
如果你仔细观察,你会看到另一个小家伙站在你的右肩上说:"先把设计做好。然后开始构建应用程序。我不介意等一段时间,因为最终结果会更好"。这家伙说话的声音要安静得多,而且常常不太自信。
你的工作是点燃左边的人,让他逃跑,给右边的人吃Ben and Jerrys‘Phish Food冰淇淋,让他留下来,给你更多好的建议。
让我们听一下右边的人:
"好吧,Matthias,有很多方法可以解决这个问题,但随着你的学习,让我们坚持通用的方法。这将使谷歌很容易找到你需要缝合在一起的单个组件。
你已经有了一个数据库,里面有一个球员表,里面有关于球员的数据。让我们在代码中创建一个类,它也代表一个玩家。
public class Player{
public int id;
public String name;
public Boolean likesPhishFood;
}
现在,当我们启动应用程序时,我们可以将表中的数据加载到应用程序中,以便开始使用它。使用适配器怎么样?然后,我们可以使用Cursor来查询我们的数据库,我们可以用它来创建一个适配器,也许是SimpleCursorAdapter,然后最终将我们的适配器绑定到ListView。稍后,您可以添加onClickListener和onLongClickListener,以便在用户单击列表中的播放器时执行某些操作。
所有这些的好处是,毫无疑问,你的代码最终会在更短的时间内生成你的应用程序;将更容易阅读;将有更少的错误,也许最重要的是,将更容易更改。
我可以保证,在某个时候,通常是进行到一半的时候,你会想添加一些关于球员的数据。也许是他们打球的次数,或者他们有一双蓝眼睛。使用MVC设计,与在代码中查找ArrayLists和需要更改以适应新数据的循环相比,这类更改要容易得多,也不太容易产生新的错误。
当然,在你的应用程序准备就绪之前,你需要更多的时间,但你在这一过程中所学到的东西将多次回报投资——在这个应用程序和你未来使用的其他应用程序中。">
听右边的人说。他讲道理。
http://www.mysamplecode.com/2012/07/android-listview-cursoradapter-sqlite.html
祝你好运。