在我的应用程序中,我想使用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 []?
请帮帮我们。
答案 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
。