Android: показать переданные данные для второго действия - PullRequest
0 голосов
/ 06 марта 2020

Я отправляю arraylist из моей основной деятельности на мою вторую активность со следующим кодом

ArrayList<String> RecipeNames = new ArrayList<>();
RecipeNames.add("Cake");

intentLoadNewActivity.putExtra("names",RecipeNames);
startActivity(intentLoadNewActivity);

И вот во втором моем занятии я получаю arraylist.

ArrayList<String> names = (ArrayList<String>) getIntent().getStringArrayListExtra("names");
TextView Tname = findViewById(R.id.RecName);

// here I set a textView to be the string that arraylist contains.
Tname.setText(String.valueOf(names));

My проблема в том, что когда я отображаю массив, вместо «Cake» я получаю «[Cake]»

Как мне удалить «[]»?

Ответы [ 3 ]

1 голос
/ 06 марта 2020

У вас есть список объектов String, но вы пытаетесь отобразить один, когда вы на самом деле отображаете несколько объектов. Если вы хотите отобразить одну строку, не передавайте список строк, просто строку.

Если вы хотите просто получить одну строку из объектов списка строк, вы можете сделать это с помощью следующего .

String anyName = names.stream().findAny().orElse(null);

if (anyName != null) {
    // call setText
}
0 голосов
/ 06 марта 2020

Если вы просто хотите удалить скобки, я думаю, что следующее должно служить вашей цели.

Tname.setText(String.valueOf(names)
    .replaceAll("\\[", "").replaceAll("\\]",""));
0 голосов
/ 06 марта 2020

Если вам нужно отформатировать текст перед его отображением на экране, вы можете использовать StringBuilder

Пример:

StringBuilder stringBuilder = new StringBuilder();
for (String name : names) {
  stringBuilder.append(name);
  stringBuilder.append(" ");
}
textView.setText(stringBuilder.toString());
...