Ich habe über das Internet und SO seit Stunden gesucht. Ich habe zahlreiche Beispiele/Antworten zum Hinzufügen von Elementen aus ArrayList zu einer anderen ArrayList gesehen, kann aber nichts finden, was erklärt, wie Elemente einer ArrayList zu ArrayList hinzugefügt werden.Wie fügt man Artikel von ArrayList <Model> zu ArrayList <String> in Android?
Ich habe einen Assistenten, der Auswahlen in zwei verschiedenen ArrayLists speichert. Der erste Bildschirm speichert die ausgewählten Elemente in einer ArrayList, ein anderer Bildschirm speichert ausgewählte Elemente in einer ArrayList, und auf dem letzten Bildschirm werden die in der ArrayList ausgewählten Elemente angezeigt.
Ich habe versucht stringArrayList.add(modelArrayList)
, aber das gibt den Fehler, dass String nicht auf das Modell angewendet werden kann.
EDIT: Hinzugefügt Klassen
Um zu klären und die Dinge klarer, was mit ich arbeite. Ich implementiere einen "Wizard" mit WizarDroid Library und die Seite, die ich versuche zwei verschiedene ArrayLists zusammenzuführen, basiert auf diesem Tutorial here.
Model-Klasse:
public class NSBaseModel {
private String baseName;
public NSBaseModel(String name)
{
baseName = name;
}
public String getBaseName() {
return baseName;
}
}
Wizard Seite:
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;
}
}
}
In meiner Klasse Createlist Ich habe public static ArrayList<String> nsList = new ArrayList<String>();
EDIT
gelöst mein Problem dank @Polichronis Charitidis . Seine Antwort war die richtige Lösung. Der Grund, warum es für mich nicht funktionierte, ist, dass ich int i
in meinen beiden for-Schleifen deklariert hatte, was das System und das Ergebnis verwirrte. Ich musste die int i
Variable in meiner zweiten for Schleife zu einem anderen Buchstaben ändern und jetzt funktioniert es. So sieht meine zweite "for" -Schleife jetzt aus.
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());
}
Wo ist 'stringArrayList' und' modelArrayList' Deklaration, und was ist in ihnen? –
Sie können nicht, können Sie nur Typ String hinzufügen zur Liste und Sie können nur Typ Modell Zur Liste hinzufügen –
zeigen Sie Ihre 'Modell –