Ich möchte das ausgewählte Element aus ListView zu einem anderen Listview mit Shared Prefences senden. Ich kann den Artikel speichern, kann diesen Artikel aber nicht in einer anderen Listenansicht sehen. AktivitätsklasseListView zeigt nichts an
TextView textUrun = (TextView) view.findViewById(R.id.textUrun);
TextView textFiyat = (TextView) view.findViewById(R.id.textFiyat);
String yemek = textUrun.getText().toString();
String fiyat = textFiyat.getText().toString();
DataProvider dataProvider = new DataProvider(yemek,fiyat);
list.add(dataProvider);
String jsonurun = gson.toJson(list);
SharedPreferences sharedPreferences = getSharedPreferences("yemekbilgi", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("yemek",jsonurun);
editor.apply();
Toast.makeText(getApplicationContext(),"Listeye Kaydedildi",Toast.LENGTH_LONG).show();
Dies ist die Liste Klasse, welche Elemente angezeigt werden sollen. Listele1
SharedPreferences sharedPreferences = getSharedPreferences("urun1", Context.MODE_PRIVATE);
List<DataProvider> list;
String jsonurun = sharedPreferences.getString("liste1", "");
Gson gson = new Gson();
DataProvider[] providers = gson.fromJson(jsonurun, DataProvider[].class);
list = Arrays.asList(providers);
listDataAdapter = new ListDataAdapter(getApplicationContext(), list);
listView = (ListView) findViewById(R.id.liste1);
listView.setAdapter(listDataAdapter);
Schließlich ist dies Adapter Class
public class ListDataAdapter extends ArrayAdapter {
List list = new ArrayList();
public ListDataAdapter(@NonNull Context context,List<DataProvider> list) {
super(context, R.layout.be_layout, list);
}
static class LayoutHandler{
TextView ad,fiyat;
}
@Override
public void add(@Nullable Object object) {
super.add(object);
list.add(object);
}
@Override
public int getCount() {
return list.size();
}
@Nullable
@Override
public Object getItem(int position) {
return list.get(position);
}
@NonNull
@Override
public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
View view = convertView;
LayoutHandler layoutHandler;
if (view == null){
LayoutInflater layoutInflater = (LayoutInflater) this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = layoutInflater.inflate(R.layout.child_layout,parent,false);
layoutHandler = new LayoutHandler();
layoutHandler.ad = (TextView) view.findViewById(R.id.textUrun);
layoutHandler.fiyat = (TextView) view.findViewById(R.id.textFiyat);
view.setTag(layoutHandler);
}
else
layoutHandler = (LayoutHandler) view.getTag();
DataProvider dataProvider = (DataProvider) this.getItem(position);
layoutHandler.ad.setText(dataProvider.getAd());
layoutHandler.fiyat.setText(dataProvider.getFiyat());
return view;
}
}
setzen Sie Ihre Liste 'List' 'sein notifyDataSetChanged an Adapter und rufen()' –
Sie leere Liste übergeben, siehe meine Antwort bei Ihnen zu beheben –
Sie dies nicht tun muss überschreiben hinzufügen Methode von ArrayAdapter, oder halten Sie ein Arraylist-Feld drin –