首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >If语句中的Android字符串数组

If语句中的Android字符串数组
EN

Stack Overflow用户
提问于 2014-01-13 16:56:09
回答 3查看 2.5K关注 0票数 3

据我所知,Android中的字符串数组不是动态的。至少根据我在这个网站上得到的信息。我不能只是创建一个字符串数组,然后在我想要的时候向它添加尽可能多的项目。为了解决这个问题,您执行一个ListArray,然后在完成该数组后将其转换为一个字符串数组。如果我被误导了,那么您可以通过告诉我如何创建一个动态字符串数组来回答这个问题,例如:

代码语言:javascript
运行
复制
String[] menuList = new String[];
menuList.add("One");
menuList.add("A");
String firstItem = menuList[0];
menuList.add("Two");

请注意,我可以从它中提取,然后添加到它,而不必采取任何额外的步骤或转换。

假设上述情况不可能实现,我将尝试根据联机文本文件中的数据设置数组。到目前为止还不错,每次他们访问这个文本文件时,应用程序都会将文本文件保存在应用程序中。还是很好。但是,如果没有internet访问,我希望字符串数组基于保存的本地文本文件。问题是,我认为我需要在创建字符串数组时声明它的长度,如果我在if语句中创建它,则应用程序的其余部分将无法识别它。如下所示:

代码语言:javascript
运行
复制
ListArray<String> menuList = getFile(filename);
//The above line populates the ListArray with the online file, and returns an empty ListArray if there is no internet connection or if there is some problem with getting the file.
//Now I want to populate a String[] with the ListArray if it was successful (and overwrite the local copy), or if it was unsuccessful, I want to get the local copy and populate it with that.
if(menuList.size != 0){
   writeToFile("Menu List", menuList);
   String[] menuArray = menuList.toArray(new String[menuList.size()]);
} else {
   String[] menuArray = readFromFile("Menu List");
}
setUpView(menuArray);

显然,这是行不通的,因为setUpView无法看到menuArray是在if语句中创建的。在使用if语句确定其内容时,如何使用String数组(而不是简单地使用ListArray )?

我应该提一提,既然我已经把问题写出来了,我已经看到了好几个工作。例如,我可以简单地组合写和读方法,然后我就不需要在这里使用if语句了。或者,我可以使用ListArray直到最后一分钟,或者将String[]设置为比我需要的时间长得多,并且当它到达空槽时停止从它中提取。尽管如此,在if语句中使用String[]之前已经出现过,如果可能的话,我想知道如何实现这样的事情。有什么想法?

EN

Stack Overflow用户

发布于 2014-01-13 17:58:42

我引用SLaks的回答的话,我想在这里补充你的评论,因为我还没有足够的声誉。您“不需要在声明中设置长度”。线

String[] menuArray;

实际上,它只声明对数组对象的引用,它不创建对象本身,也不为数组分配内存(堆栈上引用的微小位除外)。但是,请记住在访问变量之前初始化它。

尽管如此,我认为如果您正在寻找一个“可扩展”数组,那么您应该使用ArrayListList接口。ArrayList而不是ListArray是来自Java官方文档的“列表接口的可调整大小数组实现”。

你能把setUpView方法改成List吗?如果没有,仍然可以使用以下方法将ArrayList转换为数组:

代码语言:javascript
运行
复制
List<String> menuList;
// ...
String[] arr = (String[]) menuList.toArray();
List<String> list = new ArrayList<String>(Arrays.asList(arr));
票数 1
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21096929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档