Esempio n. 1
0
        public static void setListViewHeightBasedOnChildren(ListView listView)
        {
            IListAdapter listAdapter = listView.Adapter;

            if (listAdapter == null)
            {
                // pre-condition
                return;
            }

            int totalHeight  = 0;
            int desiredWidth = View.MeasureSpec.MakeMeasureSpec(listView.Width, View.MeasureSpec.AT_MOST);

            for (int i = 0; i < listAdapter.GetCount(); i++)
            {
                View listItem = listAdapter.GetView(i, null, listView);
                listItem.Measure(1000, 0);
                totalHeight += listItem.MeasuredHeight;
            }

            ViewGroup.LayoutParams parameters = listView.GetLayoutParams();
            parameters.Height = totalHeight + (listView.DividerHeight * (listAdapter.GetCount() - 1)) + 10;
            listView.SetLayoutParams(parameters);
            listView.RequestLayout();
        }
Esempio n. 2
0
        private void LateUpdate()
        {
            if (mAdapter != null && ItemPre != null)
            {
                //适配器数据数量与界面网格数量的差值
                int itemCountDiff = mAdapter.GetCount() - itemPointList.Count;

                //如果数据个数有变化需要更新界面
                if (itemCountDiff != 0)
                {
                    OnItemCountChange(itemCountDiff);
                    AdjustItemsPosition();
                }

                //界面实际位置与最后一个位置的差值
                int diffPosition = GetCurrentItemId() - currentPosition;

                if (diffPosition != 0)
                {
                    OnPositionChange(diffPosition);
                    currentPosition = GetCurrentItemId();
                    AdjustItemsPosition();
                }

                UpdateAllItem();
            }
        }