private void Initialize(Context context)
        {
            if (!_initialized)
            {
                m_TouchSlop = ViewConfiguration.Get(this.Context).ScaledTouchSlop;

                m_DataSetObserver = new StickyListHeadersListViewObserver(this);
                m_AdapterHeaderAdapterClickListener = new AdapterHeaderAdapterClickListener(OnHeaderListClickListener, this);

                base.SetOnScrollListener(this);
                //null out divider, dividers are handled by adapter so they look good with headers
                base.Divider       = null;
                base.DividerHeight = 0;

                m_ViewConfiguration = ViewConfiguration.Get(context);
                m_ClippingToPadding = true;

                try
                {
                    //reflection to get selector ref
                    var absListViewClass  = JNIEnv.FindClass(typeof(AbsListView));
                    var selectorRectId    = JNIEnv.GetFieldID(absListViewClass, "mSelectorRect", "()Landroid/graphics/Rect");
                    var selectorRectField = JNIEnv.GetObjectField(absListViewClass, selectorRectId);
                    m_SelectorRect = Java.Lang.Object.GetObject <Rect>(selectorRectField, JniHandleOwnership.TransferLocalRef);

                    var selectorPositionId = JNIEnv.GetFieldID(absListViewClass, "mSelectorPosition", "()Ljava/lang/Integer");
                    m_SelectorPositionField = JNIEnv.GetObjectField(absListViewClass, selectorPositionId);
                }
                catch (Exception)
                {
                }
                _initialized = true;
            }
        }
コード例 #2
0
        public override void UnregisterDataSetObserver(DataSetObserver observer)
        {
            _observeCount--;

            if (_observeCount == 0)
            {
                if (_incc != null)
                {
                    _incc.CollectionChanged -= OnCollectionChanged;
                }

                foreach (var entry in _initializedViews)
                {
                    var inpc = entry.Value.Data as INotifyPropertyChanged;
                    if (inpc != null)
                    {
                        inpc.PropertyChanged -= OnItemChanged;
                    }

                    _destroyView?.Invoke(entry.Key);
                }

                _initializedViews.Clear();
            }

            base.UnregisterDataSetObserver(observer);
        }
コード例 #3
0
        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                if (null != _gestureDetector)
                {
                    _gestureDetector.Dispose();
                    _gestureDetector = null;
                }
                if (null != Scroller)
                {
                    Scroller.Dispose();
                    Scroller = null;
                }
                if (null != _dataSetObserver)
                {
                    _dataSetObserver.Dispose();
                    _dataSetObserver = null;
                }
                if (null != _velocityTracker)
                {
                    _velocityTracker.Recycle();
                    _velocityTracker = null;
                }
            }

            base.Dispose(disposing);
        }
コード例 #4
0
        /// <summary>
        /// Удаление потребителя данных
        /// </summary>
        /// <param name="observer"></param>
        public override void UnregisterDataSetObserver(DataSetObserver observer)
        {
            //Вызываем метод базового класса
            base.UnregisterDataSetObserver(observer);

            //Уменьшаем счётчик потребителей
            _observersCount -= 1;
            //Если все потребители отключились
            if (_observersCount == 0)
            {
                //Блокируем доступ
                lock (_items)
                {
                    //Блокируем доступ
                    lock (_itemsToLoad)
                    {
                        //Очищаем словарь элементов для загрузки
                        _itemsToLoad.Clear();
                    }

                    //Очищаем список отображаемых элементов
                    _items.Clear();
                }
            }
        }
コード例 #5
0
 public void UnregisterDataSetObserver(DataSetObserver observer)
 {
     if (mAdapter != null)
     {
         mAdapter.UnregisterDataSetObserver(observer);
     }
 }
コード例 #6
0
			void IAdapter.UnregisterDataSetObserver (DataSetObserver observer)
			{
				dataSetObservable.UnregisterObserver(observer);
				if (mAdapter != null) {
					mAdapter.UnregisterDataSetObserver(observer);
				}
			}
コード例 #7
0
 public void registerDataSetObserver(DataSetObserver observer)
 {
     mDataSetObservable.RegisterObserver(observer);
     if (mAdapter != null)
     {
         mAdapter.RegisterDataSetObserver(observer);
     }
 }
コード例 #8
0
 public void UnregisterDataSetObserver(DataSetObserver observer)
 {
     if (_adapter == null)
     {
         return;
     }
     _adapter.UnregisterDataSetObserver(observer);
 }
コード例 #9
0
 public void UnregisterDataSetObserver(DataSetObserver observer)
 {
     _dataSetObservable.UnregisterObserver(observer);
     if (_adapter != null)
     {
         _adapter.UnregisterDataSetObserver(observer);
     }
 }
コード例 #10
0
        public StickyGridHeadersBaseAdapterWrapper(Context context, StickyGridHeadersGridView gridView, object adapter)
		{
            mDataSetObserver = new StickyGridHeadersBaseAdapterWrapperObserver(this);

			mContext = context;
            mDelegate = adapter as IStickyGridHeadersBaseAdapter;
			mGridView = gridView;
            ((IStickyGridHeadersBaseAdapter)adapter).RegisterDataSetObserver(mDataSetObserver);
		}
コード例 #11
0
        private void initView()
        {
            mDataSetObserver  = new DataSetObserverImpl(this);
            mOnScrollListener = new OnScrollListenerImpl(this);

            SetOnScrollListener(mOnScrollListener);
            mTouchSlop = ViewConfiguration.Get(Context).ScaledTouchSlop;
            initShadow(true);
        }
コード例 #12
0
        public StickyGridHeadersListAdapterWrapper(IListAdapter adapter)
        {
            mDataSetObserver = new StickyGridHeadersListAdapterWrapperObserver(this);

            mDelegate = adapter;
            if (adapter != null)
            {
                adapter.RegisterDataSetObserver(mDataSetObserver);
            }
        }
コード例 #13
0
        public AdapterWrapper(Context context, object adapterDelegate)
        {
            m_Context = context;
            Delegate = adapterDelegate as IStickyListHeadersAdapter;

            if(Delegate == null)
                throw new NullReferenceException("Adapter Delegate must be of type IStickyListHeadersAdapter");
            m_DataSetObserver = new AdapterWrapperObserver(this, m_HeaderCache);
           
            Delegate.RegisterDataSetObserver(m_DataSetObserver);
        }
コード例 #14
0
        public override void RegisterDataSetObserver(DataSetObserver observer)
        {
            if (_observeCount == 0 && _incc != null)
            {
                _incc.CollectionChanged += OnCollectionChanged;
            }

            _observeCount++;

            base.RegisterDataSetObserver(observer);
        }
コード例 #15
0
        public AdapterWrapper(Context context, object adapterDelegate)
        {
            m_Context = context;
            Delegate  = adapterDelegate as IStickyListHeadersAdapter;

            if (Delegate == null)
            {
                throw new NullReferenceException("Adapter Delegate must be of type IStickyListHeadersAdapter");
            }
            m_DataSetObserver = new AdapterWrapperObserver(this, m_HeaderCache);

            Delegate.RegisterDataSetObserver(m_DataSetObserver);
        }
コード例 #16
0
        /// <summary>
        /// Добавление нового потребителя данных
        /// </summary>
        /// <param name="observer"></param>
        public override void RegisterDataSetObserver(DataSetObserver observer)
        {
            //Вызываем метод базового класса
            base.RegisterDataSetObserver(observer);

            //Увеличиваем счётчик потребителей
            _observersCount += 1;
            //Если подключается первый потребитель
            if (_observersCount == 1)
            {
                //Вызываем выполнение загрузки элементов в отдельном потоке
                ThreadPool.QueueUserWorkItem((a) =>
                {
                    //Список загруженных элементов
                    List <ELEMENT> items;

                    //Вызываем метод загрузки элементов
                    if (LoadItems(0, 100, out items))
                    {
                        //Если успешно загрузили
                        //Блокируем доступ
                        lock (_items)
                        {
                            //Добавляем новые элементы в общий список
                            _items.InsertRange(0, items);
                        }

                        //Вызываем код в основном потоке
                        Application.SynchronizationContext.Post((state) =>
                        {
                            //Сигнализируем потребителям об обновлении данных
                            NotifyDataSetChanged();
                        }, null);
                    }
                    //Если была ошибка при загрузке
                    else
                    {
                        //Вызываем код в основном потоке
                        Application.SynchronizationContext.Post((state) =>
                        {
                            //Сигнализируем потребителям о недоступности данных
                            NotifyDataSetInvalidated();
                        }, null);
                    }
                });
            }
        }
コード例 #17
0
        protected override void Dispose(bool disposing)
        {
            try
            {
                if (disposing)
                {
                    if (null != _gestureDetector)
                    {
                        _gestureDetector.Dispose();
                        _gestureDetector = null;
                    }
                    if (null != Scroller)
                    {
                        Scroller.Dispose();
                        Scroller = null;
                    }
                    if (null != _dataSetObserver)
                    {
                        _dataSetObserver.Dispose();
                        _dataSetObserver = null;
                    }
                    if (null != _velocityTracker)
                    {
                        _velocityTracker.Recycle();
                        _velocityTracker = null;
                    }
                }

                // Needs to be last, otherwise we can't access the other fields to dispose them.
                base.Dispose(disposing);
            }
            catch (Exception e)
            {
                this.Log().ErrorFormat("Failed to dispose view", e);
            }
        }
コード例 #18
0
 public void UnregisterDataSetObserver(DataSetObserver observer)
 {
     throw new NotImplementedException();
 }
コード例 #19
0
 public void UnregisterDataSetObserver(DataSetObserver observer)
 {
     if (_adapter == null) return;
     _adapter.UnregisterDataSetObserver(observer);
 }
コード例 #20
0
 public void UnregisterDataSetObserver(DataSetObserver observer) => Adapter.UnregisterDataSetObserver(observer);
コード例 #21
0
 public void RegisterDataSetObserver(DataSetObserver observer) => Adapter.RegisterDataSetObserver(observer);
コード例 #22
0
 public override void UnregisterDataSetObserver(DataSetObserver observer)
 {
     base.UnregisterDataSetObserver(observer);
     WrappedAdapter.UnregisterDataSetObserver(observer);
 }
コード例 #23
0
 public override void UnregisterDataSetObserver(DataSetObserver observer)
 {
     observers.Remove(observer);
 }
        private void Initialize(Context context)
        {
            if (!_initialized)
            {
                m_TouchSlop = ViewConfiguration.Get(this.Context).ScaledTouchSlop;

                m_DataSetObserver = new StickyListHeadersListViewObserver(this);
                m_AdapterHeaderAdapterClickListener = new AdapterHeaderAdapterClickListener(OnHeaderListClickListener, this);

                base.SetOnScrollListener(this);
                //null out divider, dividers are handled by adapter so they look good with headers
                base.Divider = null;
                base.DividerHeight = 0;

                m_ViewConfiguration = ViewConfiguration.Get(context);
                m_ClippingToPadding = true;

                try
                {
                    //reflection to get selector ref
                    var absListViewClass = JNIEnv.FindClass(typeof(AbsListView));
                    var selectorRectId = JNIEnv.GetFieldID(absListViewClass, "mSelectorRect", "()Landroid/graphics/Rect");
                    var selectorRectField = JNIEnv.GetObjectField(absListViewClass, selectorRectId);
                    m_SelectorRect = Java.Lang.Object.GetObject<Rect>(selectorRectField, JniHandleOwnership.TransferLocalRef);

                    var selectorPositionId = JNIEnv.GetFieldID(absListViewClass, "mSelectorPosition", "()Ljava/lang/Integer");
                    m_SelectorPositionField = JNIEnv.GetObjectField(absListViewClass, selectorPositionId);
                }
                catch (Exception)
                {

                }
                _initialized = true;
            }
        }
コード例 #25
0
		public void UnregisterDataSetObserver (DataSetObserver observer)
		{
			observer = null;
		}
コード例 #26
0
 public override void UnregisterDataSetObserver(DataSetObserver observer)
 {
     base.UnregisterDataSetObserver(observer);
 }
コード例 #27
0
 public void RegisterDataSetObserver(DataSetObserver observer)
 {
     _observers.Add(observer);
 }
コード例 #28
0
 //@Override
 public override void UnregisterDataSetObserver(DataSetObserver observer)
 {
     mDecoratedBaseAdapter.UnregisterDataSetObserver(observer);
 }
コード例 #29
0
		private void initView() {

			mDataSetObserver = new DataSetObserverImpl(this);
			mOnScrollListener = new OnScrollListenerImpl(this);

			SetOnScrollListener(mOnScrollListener);
			mTouchSlop = ViewConfiguration.Get (Context).ScaledTouchSlop;
			initShadow(true);
		}
コード例 #30
0
 public void UnregisterDataSetObserver(DataSetObserver observer)
 {
 }
コード例 #31
0
			public void UnregisterDataSetObserver(DataSetObserver observer)
			{
				_dataSetObservable.UnregisterObserver(observer);
				if (_adapter != null)
				{
					_adapter.UnregisterDataSetObserver(observer);
				}
			}
コード例 #32
0
 public override void RegisterDataSetObserver(DataSetObserver observer)
 {
     _observer = observer;
     base.RegisterDataSetObserver(observer);
     WrappedAdapter.RegisterDataSetObserver(observer);
 }
コード例 #33
0
ファイル: ListElementAdapter.cs プロジェクト: jlarsson/Gas
 public void RegisterDataSetObserver(DataSetObserver observer)
 {
     _observers.Add(observer);
 }
コード例 #34
0
 public override void RegisterDataSetObserver(DataSetObserver observer)
 {
     observers.Add(observer);
 }
コード例 #35
0
 public void UnregisterDataSetObserver(DataSetObserver observer)
 {
     _observers.Remove(observer);
 }
コード例 #36
0
ファイル: ListElementAdapter.cs プロジェクト: jlarsson/Gas
 public void UnregisterDataSetObserver(DataSetObserver observer)
 {
     _observers.Remove(observer);
 }
コード例 #37
0
 public NativeHorizontalListView(Android.Content.Context context, IAttributeSet attrs, int defStyle)
     : base(context, attrs, defStyle)
 {
     InitView();
     _dataSetObserver = new DataObserver(this);
 }
コード例 #38
0
 private void init(Context context, IAttributeSet attrs)
 {
     mInternalDataSetObserver = new CircleDataSetObserver(this);
     handleTypedArray(context, attrs);
     checkIndicatorConfig(context);
 }
コード例 #39
0
 public NativeHorizontalListView(IntPtr handle, JniHandleOwnership transfer)
     : base(handle, transfer)
 {
     InitView();
     _dataSetObserver = new DataObserver(this);
 }
コード例 #40
0
		public void RegisterDataSetObserver (DataSetObserver observer)
		{
			observer = observer;
		}