Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在一行代码中获取和设置字符串数组?_Java_Android - Fatal编程技术网

Java 如何在一行代码中获取和设置字符串数组?

Java 如何在一行代码中获取和设置字符串数组?,java,android,Java,Android,我有一个字符串数组emails和一个字符串变量Category\u name。要获取并设置Category\u name的结果,我使用以下方法: holder.category_name.setText(mcategoryset.get(position).getCategory_name()); 但是对于电子邮件这是一个字符串数组,我会这样做: holder.category_emails.setText(mcategoryset.get(position).getEmails().get(

我有一个字符串数组
emails
和一个字符串变量
Category\u name
。要获取并设置
Category\u name
的结果,我使用以下方法:

holder.category_name.setText(mcategoryset.get(position).getCategory_name());
但是对于
电子邮件
这是一个字符串数组,我会这样做:

holder.category_emails.setText(mcategoryset.get(position).getEmails().get(0));

i、 e.我只得到位置0的值。如何以编程方式获取所有值,而不是仅获取一个值?

在POJO类中,对于电子邮件getter,请添加另一个getter,类似这样的内容

public String getFullEmails(){
    StringBuilder emailString = new StringBuilder();
    int length = emails.length();
    for(for int=0; i<length; i++){
        emailString.append(emails[i]);
        if(i != length-1){
            emailString.append(",\n");
        }
    }
    return emailString.toString();
}
公共字符串getFullEmails(){
StringBuilder emailString=新建StringBuilder();
int length=emails.length();

对于(对于int=0;i,您可以使用java.util.Arrays,这是java提供的一种实用类方法来简化这些操作-

holder.category_emails.setText(Arrays.toString(mcategoryset.get(position).getEmails()));
其他选择包括:-

也有-
ArrayUtils.toString(数组)
(但更喜欢JDK)

commons lang允许自定义分隔符-StringUtils.join(数组“,”)

还允许使用分隔符,并具有跳过空值的选项:
Joiner.on(',').skipNulls().join(数组)
使用下面的代码

String emails = "";

for(int i = 0; i<mcategoryset.get(position).getEmails().size();i++){
 emails = emails+mcategoryset.get(position).getEmails().get(i)+",";
}

holder.category_emails.setText(emails);
String电子邮件=”;
对于(int i=0;i请尝试以下方法:

final StringBuilder stringBuilder = new StringBuilder();

for (String email : categorySet.get(position).getEmails()) {
    if (!stringBuilder.toString().isEmpty()) {
        stringBuilder.append("\n");
    }
    stringBuilder.append(email);
}

holder.category_emails.setText(stringBuilder.toString());

我认为你应该重载你的函数,比如
category\u emails.setText(String[])
或者对每个
都使用
来遍历值。

对于android开发,你可以使用TextUtils lib作为
holder.category\u emails.setText(TextUtils.join(,“,mcategoryset.get(position.getEmails()));
改用StringBuilder。请记住,字符串在Java中是不可变的。您在每+@Edd创建一个新的字符串,StringBuilder和字符串连接在执行小字符串连接时对性能的影响可以忽略不计。StringBuilder显然更适合于繁重的任务,但对于收到1到20封电子邮件,字符串连接on更具可读性,更易于管理。我还没有对其进行基准测试,但可以肯定的是,对于像这样的小任务,它不会像您所说的那样产生巨大的影响。不过,让读者了解StringBuilder还是不错的。我想您的答案对一般读者来说会更有益。我最近了解到使用串联的一个错误在循环中。所以我很早以前就更新了我的答案。谢谢你指出它。@EddSir,我在值的末尾也得到了“,”。我该怎么做才能删除末尾的逗号?