Bitte immer genau sagen:
- Was hast Du exakt gemacht?
- Was hast Du exakt vorgefunden?
In dem Link wird ja die ArrayList in einen JSON String verwandelt und dann wird es als key / Value Paar gespeichert.
Somit wirst Du eben genau diesen einen Key sehen.Und der wird immer überschrieben.
Wert Hinzufügen wäre dann immer:
- JSON lesen und mit gson deserialisieren (Dann hast Du wieder die ArrayList).
- ArrayList verändern
- ArrayList per gson in JSON String umwandeln und dann speichern.
Ich habe viele Youtube videos ausprobiert und hat nie funktioniert.
Jetzt habe ich dank den Link von Jw456 eine Liste, wo da die Strings feststehen. Ich habe ein runden Button, wo ein Alert Dialog aufgeht und zwei Input Felder sind. Dannach zeigt es beim okay klicken den Toast an. Ich habe das mit den SharedPref wie der Link von Jw456 gezeigt gehat gemacht in den Dialog(später muss es ja in der online Datenbank abspeichern....
Das sind die Seiten....
[CODE lang="java" title="Haupt Klasse"]package ..........................;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import android.app.AlertDialog;
import android.app.Fragment;
import android.content.SharedPreferences;
import android.database.DataSetObserver;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.renderscript.ScriptGroup;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class alle_apps_konsole extends Fragment {
Button add_btn;
TextView appname,packname;
String app_name, pack_name;
ListView list;
String[] apptitle ={
"Title 1","Title 2",
"Title 3","Title 4",
"Title 5",
};
String[] packtitle ={
"Sub Title 1","Sub Title 2",
"Sub Title 3","Sub Title 4",
"Sub Title 5",
};
Integer[] imgid={
R.drawable.ks_logo,R.drawable.ks_logo,
R.drawable.ks_logo,R.drawable.ks_logo,
R.drawable.ks_logo,
};
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
View fragmentlayout_alle_apps_konsole = inflater.inflate(R.layout.activity_alle_apps_konsole, null);
ListAdapterKonsole adapter=new ListAdapterKonsole(getActivity(), apptitle, packtitle,imgid);
list=(ListView)fragmentlayout_alle_apps_konsole.findViewById(R.id.listView);
list.setAdapter(adapter);
/* listView = (ListView)fragmentlayout_alle_apps_konsole.findViewById(R.id.listView); */
add_btn = (Button)fragmentlayout_alle_apps_konsole.findViewById(R.id.add_button);
appname = (TextView)fragmentlayout_alle_apps_konsole.findViewById(R.id.konsole_app_name_list);
packname = (TextView)fragmentlayout_alle_apps_konsole.findViewById(R.id.konsole_pack_name_list);
loadApps();
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
// TODO Auto-generated method stub
if(position == 0) {
//code specific to first list item
Toast.makeText(getActivity(),"Place Your First Option Code",Toast.LENGTH_SHORT).show();
}
else if(position == 1) {
//code specific to 2nd list item
Toast.makeText(getActivity(),"Place Your Second Option Code",Toast.LENGTH_SHORT).show();
}
else if(position == 2) {
Toast.makeText(getActivity(),"Place Your Third Option Code",Toast.LENGTH_SHORT).show();
}
else if(position == 3) {
Toast.makeText(getActivity(),"Place Your Forth Option Code",Toast.LENGTH_SHORT).show();
}
else if(position == 4) {
Toast.makeText(getActivity(),"Place Your Fifth Option Code",Toast.LENGTH_SHORT).show();
}
}
});
add_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
final View add_dialog = LayoutInflater.from(getActivity()).inflate(R.layout.layout_dialog_add_apps, (LinearLayout)fragmentlayout_alle_apps_konsole.findViewById(R.id.layoutAddAppsContainer));
builder.setView(add_dialog);
((TextView) add_dialog.findViewById(R.id.textTitle)).setText("neue App");
((Button)add_dialog.findViewById(R.id.button_add_app)).setText("Okay");
final AlertDialog alertDialog = builder.create();
add_dialog.findViewById(R.id.button_add_app).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EditText input_app_name = add_dialog.findViewById(R.id.input_app_name);
EditText input_package_name = add_dialog.findViewById(R.id.input_pack_name);;
app_name = input_app_name.getText().toString();
pack_name = input_package_name.getText().toString();
Toast.makeText(getActivity(), app_name + "\n" + pack_name, Toast.LENGTH_SHORT).show();
SharedPreferences sharedPreferences = getActivity().getSharedPreferences("apps_konsole", getActivity().MODE_PRIVATE);
SharedPreferences.Editor prefsEditor = sharedPreferences.edit();
Gson gson = new Gson();
String appjson = gson.toJson(app_name);
String packjson = gson.toJson(pack_name);
prefsEditor.putString("appname_konsole", appjson);
prefsEditor.putString("packname_konsole", packjson);
prefsEditor.commit();
alertDialog.dismiss();
}
});
if (alertDialog.getWindow() != null) {
alertDialog.getWindow().setBackgroundDrawable(new ColorDrawable(0));
}
alertDialog.show();
}
});
return fragmentlayout_alle_apps_konsole;
}
private void loadApps() {
SharedPreferences mPrefs = getActivity().getSharedPreferences("apps_konsole", getActivity().MODE_PRIVATE);
Gson gson = new Gson();
String json = mPrefs.getString("bacarraylist", "");
Type type = new TypeToken<ArrayList>(){}.getType();
ArrayList<alle_apps_list_konsole> arrayList= gson.fromJson(json, type);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
}[/CODE]
und der Adapter:
[CODE lang="java" title="Adapter"]package com.andrealfredklug.klugstore;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListAdapter;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import java.util.ArrayList;
public class ListAdapterKonsole extends ArrayAdapter<String> {
private final Activity context;
private final String[] apptitle;
private final String[] packtitle;
private final Integer[] imgid;
public ListAdapterKonsole(Activity context, String[] apptitle,String[] packtitle, Integer[] imgid) {
super(context, R.layout.list_row_konsole, apptitle);
// TODO Auto-generated constructor stub
this.context=context;
this.apptitle=apptitle;
this.packtitle=packtitle;
this.imgid=imgid;
}
public View getView(int position,View view,ViewGroup parent) {
LayoutInflater inflater=context.getLayoutInflater();
View rowView=inflater.inflate(R.layout.list_row_konsole, null,true);
TextView titleText = (TextView) rowView.findViewById(R.id.konsole_app_name_list);
ImageView imageView = (ImageView) rowView.findViewById(R.id.imageKonsole);
TextView subtitleText = (TextView) rowView.findViewById(R.id.konsole_pack_name_list);
titleText.setText(apptitle[position]);
imageView.setImageResource(imgid[position]);
subtitleText.setText(packtitle[position]);
return rowView;
};
}[/CODE]
Die Liste:
[CODE lang="java" title="Die Liste"]package com.andrealfredklug.klugstore;
public class alle_apps_list_konsole {
String appname;
String packagename;
int imageId;
public alle_apps_list_konsole(String appname, String packagename, int imageId) {
this.appname = appname;
this.packagename = packagename;
this.imageId = imageId;
}
public String getAppname() {
return appname;
}
public String getPackagename() {
return packagename;
}
public int getImageId() {
return imageId;
}
}
[/CODE]