gpt4 book ai didi

java - 如何在 Android 中将项目从 ArrayList 添加到 ArrayList

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:15:13 24 4
gpt4 key购买 nike

我已经在互联网上搜索了好几个小时。我看过很多关于如何将项目从 ArrayList 添加到另一个 ArrayList 的示例/答案,但似乎找不到任何解释如何将项目从 ArrayList 添加到 ArrayList 的内容。

我有一个向导可以将选择保存到两个不同的 ArrayList。第一个屏幕将所选项目保存到 ArrayList,另一个屏幕将所选项目保存到 ArrayList,然后最后一个屏幕显示从 ArrayList 中选择的项目总数。

我试过了 stringArrayList.add(modelArrayList)但这给出了字符串无法应用于模型的错误。

编辑:添加类

澄清并使事情更清楚我正在处理什么。我正在使用 WizarDroid Library 实现一个“向导”我尝试合并两个不同 ArrayList 的页面基于此多选教程 here .

模型类:

    public class NSBaseModel {
private String baseName;

public NSBaseModel(String name)
{
baseName = name;

}

public String getBaseName() {
return baseName;
}

}

向导页面:

    public class FormStepBase extends WizardStep {

ArrayList<NSBaseModel> baseNames;
ArrayList<NSBaseModel> selectedItems = new ArrayList<NSBaseModel>();
NSBaseAdapter myAdapter;
ListView myListView;

//You must have an empty constructor for every step
public FormStepBase() {
}

//Set your layout here
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
List<String> Lines = Arrays.asList(getResources().getStringArray(R.array.NAL_smoothie_base));

baseNames = new ArrayList<NSBaseModel>();
baseNames.add...//Long list of items here

View v = inflater.inflate(R.layout.step_base, container, false);

myListView = (ListView)v.findViewById(R.id.nsBaseListView);
myAdapter = new NSBaseAdapter(v.getContext(), R.layout.row_base_layout, baseNames);
myListView.setAdapter(myAdapter);
myListView.setItemsCanFocus(false);


return v;



}

/**
* Called whenever the wizard proceeds to the next step or goes back to the previous step
*/

@Override
public void onExit(int exitCode) {
switch (exitCode) {
case WizardStep.EXIT_NEXT:
//saveBaseIngredients();


final SparseBooleanArray checkedItems = myListView.getCheckedItemPositions();
int checkedItemsCount = checkedItems.size();
for (int i = 0; i < checkedItemsCount; ++i) {
// Item position in adapter
int position = checkedItems.keyAt(i);
// Add team if item is checked == TRUE!
if(checkedItems.valueAt(i))
selectedItems.add(myAdapter.getItem(position));
for (int i = 0; i < selectedItems.size(); i++) {
selectedItems.get(i);
System.out.print("option list size");
System.out.print(selectedItems.size());

//reference to static ArrayList<String> here
CreateList.nsList.add(selectedItems);

}
}
if(selectedItems.size() < 2)
Toast.makeText(getContext(), "Need to select two or more items.", Toast.LENGTH_SHORT).show();
else
{
// Just logging the output.
for(NSBaseModel t : selectedItems)
Log.d("SELECTED TEAMS: ", t.getBaseName());
//Thought I could get the strings from here since they show in the logcat

}

break;
case WizardStep.EXIT_PREVIOUS:
//Do nothing...
break;
}
}


}

在我的 CreateList 类中,我有 public static ArrayList<String> nsList = new ArrayList<String>();

编辑

感谢@Polichronis Charitidis,解决了我的问题。他的回答最终成为正确的解决方案。它对我不起作用的原因是因为我已经声明了 int i在我的两个 for 循环中,因此混淆了系统和结果。我不得不更改 int i我的第二个 for 循环中的变量到另一个字母,现在它可以工作了。这就是我的第二个“for”循环现在的样子。

for (int j = 0; j < selectedItems.size(); j++) {
selectedItems.get(i);
System.out.print("option list size");
System.out.print(selectedItems.size());
CreateList.nsList.add(selectedItems.get(j).getBaseName());

}

最佳答案

你需要改变这一行

stringArrayList.add(modelArrayList);

为此:

stringArrayList.add(modelArrayList.get(i).getBaseName());

这样您就可以将模型 ArrayList 中的字符串名称添加到字符串 ArrayList。

关于java - 如何在 Android 中将项目从 ArrayList<Model> 添加到 ArrayList<String>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37435187/

24 4 0