如何在Android中将List转换为String []

时间:2017-06-15 14:26:15

标签: android arrays list

在我的应用程序中,我想使用ChipView,来自这个库:https://github.com/adroitandroid/ChipCloud
在这个集合列表库中,我应该使用string []。
在我的应用程序中,我使用以下代码获取Tag列表:

response.body().getData().getTags()

标签模型是:

@SerializedName("tags")
@Expose
private List<NewsDetailTag> tags = null;
...
public List<NewsDetailTag> getTags() {
    return tags;
}

在上面的库中,我应该使用以下代码添加列表:

chipCloud.addChips(someStringArray);

如何在Android中将List转换为string []?

请帮帮我们。

4 个答案:

答案 0 :(得分:2)

无需转换&#34;一点都没有!不需要浪费记忆:)

看看图书馆的代码,看看ChipCloud.addChips()做了什么:

public void addChips(String[] labels) {
    for (String label : labels) {
        addChip(label);
    }
}

它只是遍历数组的元素,并使用addChip()方法单独添加每个字符串。

在您的代码中,您可以使用列表以相同的方式执行此操作:

List<NewsDetailTag> tags;
String              tagString;
ChipCloud           chipCloud;

// Get the tags, initialize the chipCloud, etc ...

for (NewsDetailTag tag : tags) {
    tagString = tag.getTheStringFromNewsDetailTag();
    chipCloud.addChip(tagString);
}

您甚至可以编写自己的扩展ChipCloud的类,并添加一个接受List参数的方法。

唯一要做的就是从String获得NewsDetailTag。但看起来它们仍然是可序列化的。

答案 1 :(得分:1)

试试这个:

String[] newList = yourList.toArray(new String[]);

希望这有效

答案 2 :(得分:0)

Java的List有一个非常方便的toArray()方法,可用于将List转换为相同类型的数组。

但是,由于你有List<NewsDetailTag>,你必须自己构建新数组。

看起来像这样:

String[] strings = new String[](list.size())
for(int i = 0; i < list.size(); i++) {
    array[i] = list.get(i).getStringField();
}

其中getStringField()NewsDetailTag上的任何属性包含您想要的字符串。

答案 3 :(得分:0)

List<NewsLineTag> tags = response.body().getData().getTags();
List<String> tagStrings = new ArrayList<String>();
//add some stuff
for (NewsLineTag tag : tags) {
    tagStrings.add(tag.getSomeTextValueINeed());
}
chipCloud.addChips(tagStrings.toArray(new String[0]));

getSomeTextValueINeed()应替换为某种方法,该方法将为您提供要展示的String

重复Converting 'ArrayList<String> to 'String[]' in Java