Java 将一个数组从strings.xml添加到另一个ArrayList
我正在尝试创建一个基于单选按钮调查的数组。我为strings.xml中的每个单选按钮提供了数组。选择单选按钮后,应提取一个数组并将其放入哈希集中以过滤掉重复项,然后放入一个新数组,以便在单击提交按钮后以片段形式显示。以下是活动的主要部分:Java 将一个数组从strings.xml添加到另一个ArrayList,java,android,arrays,list,Java,Android,Arrays,List,我正在尝试创建一个基于单选按钮调查的数组。我为strings.xml中的每个单选按钮提供了数组。选择单选按钮后,应提取一个数组并将其放入哈希集中以过滤掉重复项,然后放入一个新数组,以便在单击提交按钮后以片段形式显示。以下是活动的主要部分: //SUBMIT BUTTON Button submit = (Button) findViewById(R.id.submitBtn); final Fragment fragment = new ListFragment();
//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();
}
});
上面的代码指向一个列表适配器活动,其中收集每个项目的位置,并在列表中的项目旁边添加一张图片
看来我把数据类型搞混了。我很抱歉编辑太晚了。我对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));
}
你做错了什么:
filtered_list.add(getResources().getStringArray(R.array.firstarray))代码>将字符串数组(非字符串)作为一项添加到列表中
将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));
}
你做错了什么:
filtered_list.add(getResources().getStringArray(R.array.firstarray))代码>将字符串数组(非字符串)作为一项添加到列表中
“我的模拟器不断崩溃,我不知道出了什么问题……”
。请1)在Android Studio调试器中运行,2)清除LogCat,3)重现问题,然后4)使用堆栈跟踪更新帖子!请显示logcat,以及您选中的按钮,firstrBtn
或secondrBtn
“我的模拟器一直崩溃,我不知道出了什么问题……”
。请1)在Android Studio调试器中运行,2)清除LogCat,3)重现问题,然后4)使用堆栈跟踪更新帖子!请显示日志,以及您选中的按钮,firstrBtn
或secondrBtn
我不知道您为什么被否决-您的建议完全合理。然而,OP应该用他的logcat堆栈更新他的帖子。没有痕迹,我们只是猜测。。。看起来OP问了他的问题,然后马上逃离了现场……谢谢你的回答。通过您的回复,我可以确定我使用的是不兼容的数据类型。我做了以下操作来解决此问题:1。将string.xml更改为字符串数组数据类型。2.正如您所建议的,创建了一个助手方法。3.修改了if-then语句:从“filtered_list.add(getResources().getStringArray(R.array.firstarray));”到“filtered_list.addAll(Arrays.asList(getResources().getStringArray(R.array.firstarray));”最后,我去掉了代码中的哈希集部分。事实证明,我需要的是保留只在每个广播组中常见的结果。在发布另一个帖子之前,我将尝试解决这个问题。再次感谢你。我不知道你为什么被否决——你的建议完全合理。然而,OP应该用他的logcat堆栈更新他的帖子。没有痕迹,我们只是猜测。。。看起来OP问了他的问题,然后马上逃离了现场……谢谢你的回答。通过您的回复,我可以确定我使用的是不兼容的数据类型。我做了以下操作来解决此问题:1。将string.xml更改为字符串数组数据类型。2.正如您所建议的,创建了一个助手方法。3.修改了if-then语句:从“filtered_list.add(getResources().getStringArray(R.array.firstarray));”到“filtered_list.addAll(Arrays.asList(getResources().getStringArray(R.array.firstarray));”最后,我去掉了代码中的哈希集部分。事实证明,我需要的是保留只在每个广播组中常见的结果。在发布另一个帖子之前,我将尝试解决这个问题。再次感谢你。