Hallo Leute, ich habe ein Problem. Ich habe ein DialogFragment mit Inhalten, die in einer sqlite db auf dem Telefon gespeichert sind, und ein Fragment, das die Informationen abruft und anzeigt. Das ListView zeigt anfangs (nach der Erstellung) alles wie es sein soll, aber wenn das Zeug innerhalb des Dialogfragments aktualisiert wird, weiß ich nicht, wie man den Adapter für ListView aktualisiert. Hier ist mein Code:Wie aktualisiere ich ein ListView?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Util;
using Android.Views;
using Android.Widget;
namespace Zrelya.Fragments
{
public class OnSelectedEventArgs : EventArgs
{
public ORM.Plan Plan { get; set; }
public OnSelectedEventArgs(ORM.Plan plan)
{
Plan = plan;
}
}
public class ViewPlans : FragmentSuper
{
private Context mContext;
private ORM.DBRep dbr;
public EventHandler<OnSelectedEventArgs> OnSelected;
public ViewPlans(Context context)
{
mContext = context;
}
public override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Create your fragment here
dbr = new ORM.DBRep();
}
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
// Use this to return your custom view for this Fragment
var view = inflater.Inflate(Resource.Layout.ViewPlans, container, false);
var listView = view.FindViewById<ListView>(Resource.Id.listView);
List<ORM.Plan> plansList = dbr.GetPlans();
Adapters.Plan adapter = new Adapters.Plan(mContext, plansList);
listView.Adapter = adapter;
listView.ItemClick += (o, e) =>
{
int id = plansList[e.Position].Id;
OnSelected.Invoke(this, new OnSelectedEventArgs(plansList[e.Position]));
};
return view;
}
}
}
OnSelected.Invoke ist, was passiert, wenn ein Element geklickt wird, um das Dialog Fragment zeigt. Der folgende Code ist ein Ausschnitt aus MainActivity OnCreate Methode:
fragmentViewPlans.OnSelected += (o, e) =>
{
int id = e.Plan.Id;
DialogViewPlan(e.Plan);
};
... und die DialogViewPlan Verfahren sind unter:
private void DialogViewPlan(ORM.Plan plan)
{
if (plan != null)
{
Android.App.FragmentTransaction transaction = FragmentManager.BeginTransaction();
Helpers.DialogViewPlan dialog = new Helpers.DialogViewPlan(this, plan);
dialog.Show(transaction, "dialog");
dialog.OnDelete += delegate
{
Toast.MakeText(this, "Plan deleted...", ToastLength.Short).Show();
};
dialog.OnSave += delegate
{
Toast.MakeText(this, "Plan saved!", ToastLength.Short).Show();
};
}
}
Ich weiß nicht, wie zwischen Aktivität, Fragmente und Dialog-Fragmente zu sprechen, tut Weiß jemand, wie man das macht?
'NotifyDataSetChanged()' Ihre Listview – Yupi
aktualisieren sollte, wo ich diese Methode aufrufen, tun? –
Das ist die Adapterklassenmethode. Wenn Sie eine Instanz Ihrer Adapterklasse haben, können Sie sie zum Beispiel 'myAdapter.NotifyDataSetChanged() -,' an der Stelle aufrufen, an der Sie Dialog speichern und verwerfen. – Yupi