在我的应用程序中,我有List<String>
,并且我想将strings
中的每一个都显示在textView
中的此列表中,并用,字符进行拆分。
例如::我的List<String>
数据是= [“移动设备”,“平板电脑,”个人电脑“] 。我要设置此{{1} }放入strings
中。
我想在textView
适配器中使用它。我写下面的代码,但只显示最后RecyclerView
到string
我的代码:
TextView
使用上述代码时,只需在@Override
public void onBindViewHolder(ViewHolder holder, final int position) {
holder.txtTitle.setText(list.get(position).getTitle());
if (list.get(position).getIsSet()) {
if (list.get(position).getDesc().size() > 0) {
for (String desc : list.get(position).getDesc()) {
holder.txtState.setText(desc);
}
}
} else {
holder.txtState.setText("Not selected");
}
holder.profileEditListLayout.setOnClickListener(v -> {
Intent intent = new Intent(App.currentActivity, TesterProfileFilterActivity.class);
intent.putExtra("MACHINE_STATE", list.get(position).getId());
App.currentActivity.startActivity(intent);
});
}
我怎么办?
答案 0 :(得分:1)
您可以尝试以下方式
StringBuffer br=new StringBuffer();
for (String desc : list.get(position).getDesc()) {
br.append(desc )
}
holder.txtState.setText(br.toString());
或者您可以使用最简单的方法
String textdata = String.join(",", list.get(position).getDesc());
holder.txtState.setText(textdata );
答案 1 :(得分:1)
使用android.text.TextUtils.join()
holder.txtState.setText(TextUtils.join(", ", list.get(position).getDesc()));
答案 2 :(得分:0)
您可以像这样使用String.join
:
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("Mobile");
list.add("Tablet");
list.add("PC");
/*
* join the Strings from the list to a comma separated String
* and enclose them in brackets
*/
System.out.println("[" + String.join(", ", list) + "]");
}
输出应为
[Mobile, Tablet, PC]
在您的情况下,您将不得不写
holder.txtState.setText("[" + String.join(", ", list.get(position).getDesc()) + "]");
以使所有项目显示在TextView
中。
答案 3 :(得分:0)
您正在覆盖循环内TextView
内的文本。
应该是:
SpannableStringBuilder ssb = new SpannableStringBuilder();
for (String desc : list.get(position).getDesc()) {
ssb.append(desc);
ssb.append("\n");
}
holder.txtState.setText(ssb.toString());