Java 为什么android函数之间存在变量数据类型问题/混淆?

Java 为什么android函数之间存在变量数据类型问题/混淆?,java,android,sqlite,type-conversion,Java,Android,Sqlite,Type Conversion,作为一名新的Android程序员,令人沮丧的事情之一似乎是必须在各种内置函数/命令之间转换数据类型,包括使用SQLITE。。。除非我真的错过了什么。我花了相当多的时间在互联网上,更具体地说,我在这里试图确定处理其中一些问题的最佳方式 以下是我目前正在处理的几个关键问题 在我的活动中,我有一个开关。该开关对需要或返回布尔变量(也没有问题)的setChecked()/isChecked()方法使用明显的布尔值表示关闭/打开(没有问题)。我将这个选择存储在一个SQLITE数据库中,我相信这是很常见的,

作为一名新的Android程序员,令人沮丧的事情之一似乎是必须在各种内置函数/命令之间转换数据类型,包括使用SQLITE。。。除非我真的错过了什么。我花了相当多的时间在互联网上,更具体地说,我在这里试图确定处理其中一些问题的最佳方式

以下是我目前正在处理的几个关键问题

在我的活动中,我有一个开关。该开关对需要或返回布尔变量(也没有问题)的setChecked()/isChecked()方法使用明显的布尔值表示关闭/打开(没有问题)。我将这个选择存储在一个SQLITE数据库中,我相信这是很常见的,但是SQLITE没有布尔数据类型,只有整数。因此,对于这两个函数,要来回转换,我们必须将整数转换为布尔值,反之亦然。。。这样做似乎需要几行代码。。。每一次。对吗

在我的活动中,我还有一个微调器,它在values/array.xml中设置了一个数组,并带有字符串值。我可以使用getSelectedItem().toString()来选择字符串,并将其存储在SQLITE文本字段中。但要使用SQLITE中的数据设置该微调器,必须为每个微调器编写几行代码,以扫描数组以找到正确的值并设置“位置”。是否应该有一个函数或方法来按值设置微调器

另外,正如几乎所有使用SQLITE的人(以及一般的数据库)所建议的那样,AutoIncrement字段是理想的,它是一个整数。类似SQLiteDatabase.insert的函数将插入的记录#作为一个长字符串返回。因此,要存储该变量并将其用于更新目的,必须将LONG转换为整数(这“可能”有问题),反之亦然。再说一遍,对吗

我知道SQLITE最初不是为Android/Java编写的。。。但是,如果它是该编程中的一个相对主流,那么这些问题不应该有内置的考虑因素吗。。。再说一遍,除非我遗漏了什么

因此,在花了一个晚上的大部分时间编写一些出错的代码之后,基本上是因为这些问题(还有一些其他问题),然后重写了一大堆代码,希望这些代码是正确的,我已经把事情弄得一团糟,并且不知道需要什么变量才能工作

我可能把这篇文章弄得更混乱了,因为现在,我真的很困惑。。。所以,问题是。。。我是错过了什么还是一切正常

谢谢

  • 开关:是,您需要将布尔值存储为整数(0到1)
  • 微调器:您应该创建一个HashMap,并在启动时将值、描述和位置放在那里。然后你就可以得到这个职位了。比如:

    Map mSpinnerPositionsMap=新的HashMap()

    mSpinnerPositionsMap.put(“Choice1”,1)

  • 然后可以使用Choice1 desc检索位置,该位置将存储在db中

       int position = mSpinnerPositionsMap.get("Choice1");
    
    三,。这种转换不会有问题,因为SQLite Integer与Java Integer不同,所以您可以很好地使用Java long for ID。默认情况下,所有SQLite表都有一个autoincremental ROWID字段,因此在大多数情况下不需要添加autoincremental,请阅读

  • 这是正常的,但是如果不想处理手动转换和与DB交互的代码,可以使用ORM。看看

  • 希望这有帮助

    这不是一个聊天论坛,而是一个问答网站。请提出一个问题,直截了当地说。@juergen我想我问了一个问题,每个案例都是为了看看我做得是否正确,或者我是否遗漏了一个Java/Android命令,这会使问题变得更简单。很抱歉你不这么想,但这些都是合法的问题。@Peter不,你问了很多问题。并没有表现出任何努力(在代码中)。而且没有直截了当。我们应该如何给你一个明确的答案?你说的对,我问了一大堆相关的问题,而不是发布4个不同的相同帖子。。。。因为所有这些都是基于相同的标题。至于没有代码,当实际代码没有错的时候,我没有意识到每个问题都需要代码,但是询问是否有未知的更简单的方法。作为一名35岁的程序员,我使用多种语言,我已经帮助新手在其他网站/论坛上学习一种语言。。。像这样的问题。这就是像这样的网站的好处。作为Android/Java的新手,我想我希望其他程序员也能给予同样的礼貌,而不是批评帖子的制作方式。我想我错了。对不起,如果我冒犯了这里的任何人。。。我只是在寻求一些友好和建设性的帮助(类似于下面InvertedNetwork所做的)。我会小心我问什么以及以后怎么问。对不起,谢谢你的回复。对于#1,因此,必须转换为使用SetChecked或IsChecked作为控件。。。对的对于#3,如果我理解正确,那么您不需要一个自动递增的#id字段?这很有趣,所有Android SQLite教程都有它们。我会试试。只有当您使用适配器处理使用光标的数据时,_id字段才有用,这样连接起来就更容易了。但除此之外,不需要_id字段。