gpt4 book ai didi

java - 将 strings.xml 中的数组添加到另一个 ArrayList

转载 作者:行者123 更新时间:2023-12-02 01:14:30 27 4
gpt4 key购买 nike

我正在尝试创建一个基于单选按钮调查的数组。我在 strings.xml 中为每个单选按钮都有数组。选择单选按钮后,应获取一个数组并将其放入哈希集中以过滤掉重复项,然后放入一个新数组以在单击提交按钮后显示在 fragment 中。以下为 Activity 主要部分:

    //SUBMIT BUTTON
Button submit = (Button) findViewById(R.id.submitBtn);
final Fragment fragment = new ListFragment();
final FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
//On Submit Click show Instrument Fragment
submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {

final ArrayList filtered_list = new ArrayList<>();
// Radio Button Selection
if (firstrBtn.isChecked()){
filtered_list.add(getResources().getStringArray(R.array.firstarray));

} else if (secondrBtn.isChecked()){
filtered_list.add(getResources().getStringArray(R.array.secondarray));
}

//Convert filtered_list to final_filtered_list and eliminate duplicates
final HashSet<String> hashSet = new HashSet<String>();
hashSet.addAll(filtered_list);
filtered_list.clear();
filtered_list.addAll(hashSet);
ArrayList<String> final_filtered_list = new ArrayList<String>(hashSet);

//Send Final ArrayList
Bundle bundle = new Bundle();
bundle.putStringArrayList("RESULT_LIST", final_filtered_list);
listFragment.setArguments(bundle);

//Transaction to Fragment
transaction.replace(R.id.collect_container, listFragment);
transaction.addToBackStack(null);
transaction.commit();
}
});

strings.xml 中的数组如下所示:

<array name="firstarray">
<item> One </item>
<item> Two </item>
</array>

<array name="secondarray">
<item> Two </item>
<item> Three </item>
</array>

所以答案应该是“一”、“二”和“三”的列表。看起来很简单,但我的模拟器不断崩溃,我不知道出了什么问题。任何帮助将不胜感激。

以下是 Logcat 的一部分:

  019-11-17 16:59:07.354 32291- 
32291/ E/AndroidRuntime:
FATAL EXCEPTION: main
Process: PID: 32291
java.lang.ClassCastException: java.lang.String[] cannot be cast to
java.lang.String
at...

上面的代码指向一个列表适配器 Activity ,其中收集每个项目的位置,并在列表中的项目旁边添加图片。

看来我混淆了我的数据类型。对于迟到的编辑,我深表歉意。我在 java 编码方面相对较新,并且正在阅读兼容的数据类型。

最佳答案

将您的 onclick 修改为:

submit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Bundle bundle = new Bundle();
bundle.putStringArrayList("RESULT_LIST", Arrays.asList(getResultList()));
listFragment.setArguments(bundle);

//Transaction to Fragment
transaction.replace(R.id.collect_container, listFragment);
transaction.addToBackStack(null);
transaction.commit();
}
});

添加一个辅助方法以从资源文件中获取适当的列表:

private String[] getResultList() {
if (firstrBtn.isChecked()) {
getResources().getStringArray(R.array.firstarray));
}
return getResources().getStringArray(R.array.secondarray));
}

你做错了什么:

  1. filtered_list.add(getResources().getStringArray(R.array.firstarray)); 将字符串数组(不是字符串)作为项目添加到列表中。
  2. 当您可以直接从 String[](来自字符串资源)转换为 ArrayList 时,无需从 HashSet 转换为 ArrayList。

关于java - 将 strings.xml 中的数组添加到另一个 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58886770/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com