Как обновить ListView в предыдущей активности, обновив БД в текущей активности? - PullRequest
0 голосов
/ 31 августа 2018

Я использую Xamarin Android. В текущем действии у меня есть форма редактирования и при событии нажатия кнопки у меня есть запрос на обновление в текущем действии.

private void OnclickSaveDATAButton(object sender, EventArgs e)
    {
        var CNICCARDNUMBER = Intent.Extras.GetString("NIC");
        var conn = Connection();
        conn.BeginTransaction();
        var hf = conn.Table<mof>();
        var search = hf.Where(x => x.CNICNO == CNICCARDNUMBER).ToList().FirstOrDefault(); //Linq Query
        var Hofid = Convert.ToString(search.HOFID);

        var data = conn.Query<hof>("UPDATE hof SET HOFNAME = ? WHERE HOFID = ?", Name.Text, Hofid);
        conn.Commit();


        if (data!= null)
        {
            Toast.MakeText(this,"Updated Successfully", ToastLength.Short).Show();               

        }
        else
        { 
            Toast.MakeText(this, "Update failed", ToastLength.Short).Show();

        }

    }

Когда я возвращаюсь к предыдущему действию по событию кнопки назад

    public override void OnBackPressed()
    {


        Intent intent = new Intent(this, typeof(SearchingActivity));
        intent.SetFlags(ActivityFlags.ClearTop);
        StartActivity(intent);
    }

В предыдущем упражнении у меня был запрос выбора на событии выбора вкладки. когда я выбираю вкладку, я хочу обновить ListView и отобразить обновленные данные вместо старых.

    else if (CurrentTab.Position == 1)
        {


            Gridd = (ListView)FindViewById(Resource.Id.gridview);
            Gridd.Visibility = ViewStates.Visible;


            var CNICCARDNUMBER = Intent.Extras.GetString("cnic");


            var conn = Connection();

            var Hofid = 2;
            data1 = new List<string>();

              var data = conn.Query<combine>("SELECT hof WHERE hof.HOFID=?", Hofid);

            foreach (var values in data)
            {

                data1.Add("CNIC:" + Convert.ToString(values.CNICNO));
                data1.Add("Health card Number:" + Convert.ToString(values.CARDNO));

            }

            Gridd = (Listview)FindViewById(Resource.Id.gridview);

            ArrayAdapter<string> adapter = new ArrayAdapter<string>(this, Android.Resource.Layout.SimpleListItem1, data1);


            if (data1.Count() > 0)
            {
                Gridd.SetAdapter(adapter);
               // Gridd.Adapter = adapter;
                Gridd.ItemClick += Gridd_ItemClick;

            }
            else
            {
                Toast.MakeText(this, "No Data returned.", ToastLength.Short).Show();
            }


        }

Q: Как этого добиться?

1 Ответ

0 голосов
/ 31 августа 2018

Вы можете получить новые данные из БД, а затем вызвать listviewAdapter.OnNotifyPropertyChanged () в вашем методе onResume () вашей предыдущей операции. Это обновит ваш список.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...