Android 工作室。仅捆绑 returns 所选中的最后一个值
Android studio. Bundle returns only the last value from selected
我有一个带有自定义适配器的 listView
,其中有一个 checkBox
和 TextView
,当我 select 一些复选框时,我将它们添加到bundle
并发送到另一个 fragment
。在该片段中,我有一个简单的 TextView,我需要在其中从 bundle
获取值并显示在该 TextView 中。但问题是,当我从捆绑包中获取 selected 值并在 TextView 中设置时,它只显示最后一个值。我该如何解决这个问题?谢谢。
这里是我将 selected 值添加到包中的片段。
nextButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ArrayList<Profession> professionList = dataAdapter.getProfessionList();
ArrayList<String> getProfessions = new ArrayList<>();
personalInfoFragment = new PersonalInfoFragment();
for (int i = 0; i < professionList.size(); i++) {
Profession profession = professionList.get(i);
if (profession.isSelected()) {
getProfessions.add(profession.getName());
Bundle setProfessions = new Bundle();
setProfessions.putStringArrayList("String", getProfessions);
personalInfoFragment.setArguments(setProfessions);
}
}
replaceFragment();
}
});
好的,看这里。 PersonalInfoFragment
是我需要发送值的片段。 replaceFragment
方法替换了片段。我完成了调试,并且成功地将 selected 值添加到捆绑包中。
在 nextButton
单击它会将 selected 数据保存到包中并替换片段。
现在这是我需要获取捆绑包并在 textView 中显示的片段。
Bundle bundle = getArguments();
if (bundle != null) {
ArrayList<String> getProfessionName = bundle.getStringArrayList("String");
if (getProfessionName != null) {
for (int i = 0; i < getProfessionName.size(); i++) {
profession_text.setTextColor(Color.BLACK);
profession_text.setText(getProfessionName.get(i) + ",");
}
}
}
ProfessionText 是我的 textView,我需要在其中设置值。但是在该 textView 中仅显示捆绑包中的最后一项。如何解决这个问题?感谢阅读。
您可以像这样更改您的代码,
for (int i = 0; i < professionList.size(); i++) {
Profession profession = professionList.get(i);
if (profession.isSelected()) {
getProfessions.add(profession.getName());
}
}
Bundle setProfessions = new Bundle();
setProfessions.putStringArrayList("String", getProfessions);
personalInfoFragment.setArguments(setProfessions);
replaceFragment();
在下一个片段中,
profession_text.setTextColor(Color.BLACK);
profession_text.setText("");
if (getProfessionName != null) {
for (int i = 0; i < getProfessionName.size(); i++) {
String txt = profession_text.getText().toString() + getProfessionName.get(i) + ", ";
profession_text.setText(txt);
}
}
据我所知..你需要一个值列表才能正确显示..这里发生的是在每次迭代中你为专业文本设置一个新值,它会覆盖以前存在的值..这就是为什么你看到最后一个值..我认为如果你想要一个文本视图列表,你必须在循环中创建一个新的文本视图..在这种情况下你最好使用列表视图或回收视图。
我有一个带有自定义适配器的 listView
,其中有一个 checkBox
和 TextView
,当我 select 一些复选框时,我将它们添加到bundle
并发送到另一个 fragment
。在该片段中,我有一个简单的 TextView,我需要在其中从 bundle
获取值并显示在该 TextView 中。但问题是,当我从捆绑包中获取 selected 值并在 TextView 中设置时,它只显示最后一个值。我该如何解决这个问题?谢谢。
这里是我将 selected 值添加到包中的片段。
nextButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ArrayList<Profession> professionList = dataAdapter.getProfessionList();
ArrayList<String> getProfessions = new ArrayList<>();
personalInfoFragment = new PersonalInfoFragment();
for (int i = 0; i < professionList.size(); i++) {
Profession profession = professionList.get(i);
if (profession.isSelected()) {
getProfessions.add(profession.getName());
Bundle setProfessions = new Bundle();
setProfessions.putStringArrayList("String", getProfessions);
personalInfoFragment.setArguments(setProfessions);
}
}
replaceFragment();
}
});
好的,看这里。 PersonalInfoFragment
是我需要发送值的片段。 replaceFragment
方法替换了片段。我完成了调试,并且成功地将 selected 值添加到捆绑包中。
在 nextButton
单击它会将 selected 数据保存到包中并替换片段。
现在这是我需要获取捆绑包并在 textView 中显示的片段。
Bundle bundle = getArguments();
if (bundle != null) {
ArrayList<String> getProfessionName = bundle.getStringArrayList("String");
if (getProfessionName != null) {
for (int i = 0; i < getProfessionName.size(); i++) {
profession_text.setTextColor(Color.BLACK);
profession_text.setText(getProfessionName.get(i) + ",");
}
}
}
ProfessionText 是我的 textView,我需要在其中设置值。但是在该 textView 中仅显示捆绑包中的最后一项。如何解决这个问题?感谢阅读。
您可以像这样更改您的代码,
for (int i = 0; i < professionList.size(); i++) {
Profession profession = professionList.get(i);
if (profession.isSelected()) {
getProfessions.add(profession.getName());
}
}
Bundle setProfessions = new Bundle();
setProfessions.putStringArrayList("String", getProfessions);
personalInfoFragment.setArguments(setProfessions);
replaceFragment();
在下一个片段中,
profession_text.setTextColor(Color.BLACK);
profession_text.setText("");
if (getProfessionName != null) {
for (int i = 0; i < getProfessionName.size(); i++) {
String txt = profession_text.getText().toString() + getProfessionName.get(i) + ", ";
profession_text.setText(txt);
}
}
据我所知..你需要一个值列表才能正确显示..这里发生的是在每次迭代中你为专业文本设置一个新值,它会覆盖以前存在的值..这就是为什么你看到最后一个值..我认为如果你想要一个文本视图列表,你必须在循环中创建一个新的文本视图..在这种情况下你最好使用列表视图或回收视图。