private void FillListView()
        {
            if (_positionen != null)
            {
                PositionViewAdapter _adapter = new PositionViewAdapter(_activity, _positionen);
                _listview.Adapter = _adapter;
                _listview.ItemClick += (object sender, AdapterView.ItemClickEventArgs e) =>
                {
                };

            }
            else if (_tasks != null)
            {
                TaskViewAdapter adapter = new TaskViewAdapter(_activity, _tasks, Android.Graphics.Color.Black);
                _listview.Adapter = adapter;
                _listview.ItemClick += (object sender, AdapterView.ItemClickEventArgs e) =>
                {
                    _selectedIndex = e.Position;
                    this.Dismiss();
                };

            }
            else if (_logs != null)
            {
                LogViewAdapter adapter = new LogViewAdapter(_activity, _logs);
                _listview.Adapter = adapter;
                _listview.ItemClick += (object sender, AdapterView.ItemClickEventArgs e) =>
                {
                    _selectedIndex = e.Position;
                    this.Dismiss();
                };

            }
            else if (_anschriften != null)
            {
                AnschriftViewAdapter adapter = new AnschriftViewAdapter(_activity, _anschriften);
                _listview.Adapter = adapter;
                _listview.ItemClick += (object sender, AdapterView.ItemClickEventArgs e) => 
                    {
                        _selectedIndex = e.Position;
                        this.Dismiss();
                    };
            }
        }
        private void OfflineDataYesClicked (object sender, DialogClickEventArgs e)
        {
            try
            {
                int index = _transaction.Positions.FindIndex(x => x.ID == _tempPosition.ID);
                if (_transaction.DeletePosition(index,MainActivity.User))
                {       
                    Toast.MakeText (_context, _context.Resources.GetString(Resource.String.DeletedSuccessfully),ToastLength.Short);

                    tvWert.Text = _transaction.Wert;

                    // refresh the listview 
                    _adapter = new PositionViewAdapter (_context, _transaction.Positions);
                    _lvPositions.Adapter = _adapter;

                    _tempPosition = null;

                    // something has changed 
                    // sometimes I am confused if I am an genius or an human 
                    // if you ain't asking that yourself, you understand a shit about my code 
                    bChanged = true;

                }
            }
            catch(Exception ex)
            {
                ExceptionWriter.WriteLogFile(ex);
            }

        }
        public void UpdateTransaction(BusinessLayer.Transaction transaction, BusinessLayer.Position position, EditMode mode)
        {
            try
            {
                if (mode == EditMode.INSERT)
                {
                    // Insert the row in the tableview
                    if (_transaction.Positions == null)
                        _transaction.Positions = new List<BusinessLayer.Position>();

                    // Insert the current Wert
                    tvWert.Text = _transaction.Wert;

                    // refresh the listview
                    _adapter = new PositionViewAdapter (_context, _transaction.Positions);
                    _lvPositions.Adapter = _adapter;
                }
                else
                {
                    // Update Modus
                    // Read the data
                    if (position == null)
                        return;

                    int index = _transaction.Positions.FindIndex(x => x.ID == position.ID);

                    // Insert the current Wert
                    tvWert.Text = _transaction.Wert;

                    // refresh the listview
                    _adapter = new PositionViewAdapter (_context, _transaction.Positions);
                    _lvPositions.Adapter = _adapter;


                }

                // a change has been performed here, so we have to reload the list in TBAngebot/TBAuftrag etc...
                bChanged = true;
            }
            catch(Exception ex)
            {
                DataAccessLayer.ExceptionWriter.WriteLogFile(ex);

            }

        }
        async private void FillControlsAsync()
        {
            try
            {

                // insert the person
                if (_person != null)
                    tvCustomer.Text = _person.Name;
                else
                    tvCustomer.Text = "";
                
                // First check that the transaction object has a reference
                if (_transaction == null || _transaction.ID == null || _transaction.ID == "0")
                {
                        _transaction.Positions = new List<BusinessLayer.Position>();
                    // now fill the position listview
                    _adapter = new PositionViewAdapter (_context, _transaction.Positions);
                    _lvPositions.Adapter = _adapter;

                    // set the rechung and lieferadresse
                        SetRechnungsAddress(null);
                        SetLieferAddress(null);

                    // fill default value
                    EdDatum.Text = DataAccessLayer.TypeConverter.DateToString(DateTime.Now);
                    tvWert.Text = "0";
                    return;
                }


                _transaction.Positions = await BusinessLayer.Position.GetPositionenAsync(_transaction.ID,_transaction.Waehrung, _context.BaseContext.Resources.Configuration.Locale.Language.ToUpper(),MainActivity.User);

                // fill the controls
                EdDatum.Text = _transaction.Datum;
                EdProject.Text = _transaction.Projekt;
                tvCustomer.Text = _transaction.Kunde;
                // set the rechnungs- und lieferaddresse
                SetRechnungsAddress(_transaction);
                SetLieferAddress(_transaction);
                tvWert.Text = _transaction.Wert;

                _adapter = new PositionViewAdapter (_context, _transaction.Positions);
                _lvPositions.Adapter = _adapter;
            }
            catch(Exception ex)
            {
                ExceptionWriter.WriteLogFile(ex);
            }

        }