Ich versuche, die Daten von 4 Variablen auf den SharedPreferences zu speichern und es in eine Liste zu laden. Mein Problem ist, dass es alle Daten in der ersten Zeile der Liste anzeigt. Ich wollte teilen wie: Jedes Mal, wenn ich auf den Speichern-Knopf klicke, wollte ich die 4 Variablen speichern und wenn ich erneut darauf klicke, möchte ich die neuen Variablen speichern und eine neue Zeile anzeigen.Android - Split-String von Linien
Zeige alle auf dem gleichen Index:
TubeDataFragment (Speichern):
public class TubeDataFragment extends Fragment {
List<String> tubeData = new ArrayList<>();
public TubeDataFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_tube_data, container, false);
final Spinner spinnerMaterial = (Spinner) view.findViewById(R.id.snipperMaterial);
ArrayAdapter<String> myAdapter = new ArrayAdapter<String>(getActivity(), R.layout.spinner_item, getResources().getStringArray(R.array.material));
myAdapter.setDropDownViewResource(R.layout.spinner_dropdown_item);
spinnerMaterial.setAdapter(myAdapter);
//controls
Button btn_saveTube = (Button) view.findViewById(R.id.btn_save_tube);
final EditText et_diameter = (EditText) view.findViewById(R.id.et_diameter);
final EditText et_clr = (EditText) view.findViewById(R.id.et_clr);
final EditText et_thickness = (EditText) view.findViewById(R.id.et_thickness);
//guarda dados do tubo
btn_saveTube.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
tubeData.add(" Diameter: " + et_diameter.getText().toString());
tubeData.add(" Thickness: " + et_thickness.getText().toString());
tubeData.add(" CLR: " + et_clr.getText().toString());
tubeData.add(" Material: " + spinnerMaterial.getSelectedItem().toString());
StringBuilder stringBuilder = new StringBuilder();
int i = 1;
for(String data : tubeData)
{
stringBuilder.append(data);
stringBuilder.append(";");
if(i++ == tubeData.size())
{
stringBuilder.append("\n");
}
}
SharedPreferences settings = getActivity().getSharedPreferences("PREFS",0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("tubeData", stringBuilder.toString());
editor.commit();
}
});
return view;
}
}
ArchiveFragment (Last)
public class ArchiveFragment extends Fragment {
public ArchiveFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_archive, container, false);
ListView tubeDataList = (ListView) view.findViewById(R.id.tubeData_list);
//load tube data
SharedPreferences settings = getActivity().getSharedPreferences("PREFS",0);
String tubeDataString = settings.getString("tubeData", "");
String[] tubeDataSplit = tubeDataString.split("\n");
List<String> tubeDataItems = new ArrayList<>();
for(int i=0; i<tubeDataSplit.length;i++)
{
tubeDataItems.add(tubeDataSplit[i]);
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
android.R.layout.simple_list_item_1, android.R.id.text1, tubeDataItems);
// Assign adapter to ListView
tubeDataList.setAdapter(adapter);
return view;
}
}
Wenn Sie eine Liste möchten, speichern Sie dann eine JSONArray als String –
, was ist der Unterschied? Dies sollte mit einer Liste funktionieren ... – adiajdiadj
Der Unterschied ist besser als die Verwendung eines String-Builders, den Sie anhängen und später splitten von –