コード例 #1
0
        public override Android.Views.View GetView(int position, Android.Views.View convertView
                                                   , Android.Views.ViewGroup parent)
        {
            Com.Zhy.Adapter.Abslistview.Base.ItemViewDelegate <T> itemViewDelegate = mItemViewDelegateManager
                                                                                     .GetItemViewDelegate(mDatas[position], position);
            int layoutId = itemViewDelegate.GetItemViewLayoutId();

            Com.Zhy.Adapter.Abslistview.ViewHolder viewHolder = null;
            if (convertView == null)
            {
                Android.Views.View itemView = Android.Views.LayoutInflater.From(mContext).Inflate
                                                  (layoutId, parent, false);
                viewHolder = new Com.Zhy.Adapter.Abslistview.ViewHolder(mContext, itemView, parent
                                                                        , position);
                viewHolder.mLayoutId = layoutId;
                OnViewHolderCreated(viewHolder, viewHolder.GetConvertView());
            }
            else
            {
                viewHolder           = (ViewHolder)convertView.Tag;
                viewHolder.mPosition = position;
            }
            Jbox <T> box = (Jbox <T>)GetItem(position);

            Convert(viewHolder, box.Value, position);
            return(viewHolder.GetConvertView());
        }
コード例 #2
0
 public virtual Com.Zhy.Adapter.Abslistview.Base.ItemViewDelegateManager <T> AddDelegate
     (int viewType, Com.Zhy.Adapter.Abslistview.Base.ItemViewDelegate <T> delegate_)
 {
     if (delegates.Get(viewType) != null)
     {
         throw new System.ArgumentException("An ItemViewDelegate is already registered for the viewType = "
                                            + viewType + ". Already registered ItemViewDelegate is " + delegates.Get(viewType
                                                                                                                     ));
     }
     delegates.Put(viewType, delegate_);
     return(this);
 }
コード例 #3
0
        public virtual Com.Zhy.Adapter.Abslistview.Base.ItemViewDelegateManager <T> AddDelegate
            (Com.Zhy.Adapter.Abslistview.Base.ItemViewDelegate <T> delegate_)
        {
            int viewType = delegates.Size();

            if (delegate_ != null)
            {
                delegates.Put(viewType, delegate_);
                viewType++;
            }
            return(this);
        }
コード例 #4
0
        public virtual Com.Zhy.Adapter.Abslistview.Base.ItemViewDelegateManager <T> RemoveDelegate
            (Com.Zhy.Adapter.Abslistview.Base.ItemViewDelegate <T> delegate_)
        {
            if (delegate_ == null)
            {
                throw new System.ArgumentNullException("ItemViewDelegate is null");
            }
            int indexToRemove = delegates.IndexOfValue(delegate_);

            if (indexToRemove >= 0)
            {
                delegates.RemoveAt(indexToRemove);
            }
            return(this);
        }
コード例 #5
0
        public virtual int GetItemViewType(T item, int position)
        {
            int delegatesCount = delegates.Size();

            for (int i = delegatesCount - 1; i >= 0; i--)
            {
                Com.Zhy.Adapter.Abslistview.Base.ItemViewDelegate <T> delegate_ = delegates.ValueAt
                                                                                      (i);
                if (delegate_.IsForViewType(item, position))
                {
                    return(delegates.KeyAt(i));
                }
            }
            throw new System.ArgumentException("No ItemViewDelegate added that matches position="
                                               + position + " in data source");
        }
コード例 #6
0
        public virtual void Convert(Com.Zhy.Adapter.Abslistview.ViewHolder holder, T item
                                    , int position)
        {
            int delegatesCount = delegates.Size();

            for (int i = 0; i < delegatesCount; i++)
            {
                Com.Zhy.Adapter.Abslistview.Base.ItemViewDelegate <T> delegate_ = delegates.ValueAt
                                                                                      (i);
                if (delegate_.IsForViewType(item, position))
                {
                    delegate_.Convert(holder, item, position);
                    return;
                }
            }
            throw new System.ArgumentException("No ItemViewDelegateManager added that matches position="
                                               + position + " in data source");
        }