@Override public View getView(int position, View convertView, ViewGroup parent) { if (getItemViewType(position) == TYPE_FOOTER) { if (convertView == null) { convertView = new BottomLoadingView(mContext); convertView.setLayoutParams( new LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); } mLoadingView = (BottomLoadingView) convertView; int childViewCount = getChildCount(); int allCount = getCount(); if (childViewCount == allCount - 1 && isHaveMore) { // 未填满屏幕并且有更多 mLoadingView.changeToClickStatus(onLoadMoreListener); } else { mLoadingView.changeToLoadingStatus(); } return convertView; } else { if (convertView instanceof BottomLoadingView) { // 防止错位 return mAdapter.getView(position, null, parent); } return mAdapter.getView(position, convertView, parent); } }
public void setGridView1HeightBasedOnChildren(GridView gridView) { // 获取ListView对应的Adapter BaseAdapter listAdapter = (BaseAdapter) gridView.getAdapter(); if (listAdapter == null) { return; } int totalHeight = 0; for (int i = 0, len = 2; i < len; i++) { // listAdapter.getCount()返回数据项的数目 View listItem = listAdapter.getView(i, null, gridView); listItem.measure(0, 0); // 计算子项View 的宽高 totalHeight += listItem.getMeasuredHeight(); // 统计所有子项的总高度 } ViewGroup.LayoutParams params = gridView.getLayoutParams(); params.height = totalHeight; // listView.getDividerHeight()获取子项间分隔符占用的高度 // params.height最后得到整个ListView完整显示需要的高度 gridView.setLayoutParams(params); }
@Override public View getView(final int position, View convertView, ViewGroup parent) { long t = System.currentTimeMillis(); View view = mAdapter.getView(position, convertView, parent); if (view == null) { return null; } // 表示分隔线 if (getItem(position) == null) { bindNormalRecordSelector(view); return view; } CheckBox checkBox = (CheckBox) view.findViewById(R.id.checkbox); checkBox.setVisibility(View.VISIBLE); checkBox.setOnCheckedChangeListener(null); checkBox.setChecked(isItemSelected(position)); checkBox.setOnCheckedChangeListener( new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { setItemSelected(position, isChecked); } }); t = System.currentTimeMillis() - t; LogUtil.d("getView time = " + t); return view; }
public void fillLinearLayout() { removeAllViews(); if (mHeaderView != null) { addView(mHeaderView); } int count = mAdapter.getCount(); if (mCacheView.size() != count) { // TODO 全部清掉太粗暴了 mCacheView.clear(); } for (int i = 0; i < count; i++) { View srcView = null; if (mCacheView.size() > i) { srcView = mCacheView.get(i); } View v = mAdapter.getView(i, srcView, null); if (mCacheView.size() > i) { mCacheView.set(i, v); } else { mCacheView.add(v); } v.setOnClickListener(this.onClickListener); addView(v); } if (mFooterView != null) { addView(mFooterView); } }
private void populateWallpapersFromAdapter( ViewGroup parent, BaseAdapter adapter, boolean addLongPressHandler) { for (int i = 0; i < adapter.getCount(); i++) { FrameLayout thumbnail = (FrameLayout) adapter.getView(i, null, parent); parent.addView(thumbnail, i); WallpaperTileInfo info = (WallpaperTileInfo) adapter.getItem(i); thumbnail.setTag(info); info.setView(thumbnail); if (addLongPressHandler) { addLongPressHandler(thumbnail); } thumbnail.setOnClickListener(mThumbnailOnClickListener); } }
public static void setListViewHeight(ListView mListView, BaseAdapter adapter) { adapter = (BaseAdapter) mListView.getAdapter(); if (adapter == null) { return; } int mTotalHeight = 0; for (int i = 0; i < adapter.getCount(); i++) { View mListItem = adapter.getView(i, null, mListView); mListItem.measure(0, 0); mTotalHeight += mListItem.getMeasuredHeight(); } ViewGroup.LayoutParams mParams = mListView.getLayoutParams(); mParams.height = mTotalHeight + (mListView.getDividerHeight() * (adapter.getCount() - 1)); mListView.setLayoutParams(mParams); }
private void setupAdapterView(FoldableItemLayout layout, int position) { // Binding layout to new data int type = adapter.getItemViewType(position); View recycledView = null; if (type != Adapter.IGNORE_ITEM_VIEW_TYPE) { Queue<View> cache = recycledViews.get(type); recycledView = cache == null ? null : cache.poll(); } View view = adapter.getView(position, recycledView, layout.getBaseLayout()); if (type != Adapter.IGNORE_ITEM_VIEW_TYPE) { viewsTypesMap.put(view, type); } layout.getBaseLayout().addView(view, PARAMS); }
/** {@inheritDoc} */ public View getView(int pos, View convertView, ViewGroup parent) { int sectionNum = 0; for (Object section : mSections.keySet()) { BaseAdapter adapter = mSections.get(section); int size = adapter.getCount() + 1; if (pos == 0) { return mHeaderAdapter.getView(sectionNum, null, parent); } if (pos < size) { return adapter.getView(pos - 1, null, parent); } pos -= size; sectionNum++; } return null; }
public static void setListViewHeightBasedOnChildren(ListView listView, BaseAdapter adapter) { // 获取ListView对应的Adapter if (adapter == null) { return; } int totalHeight = 0; for (int i = 0, len = adapter.getCount(); i < len; i++) { // listAdapter.getCount()返回数据项的数目 View listItem = adapter.getView(i, null, listView); // 计算子项View 的宽高 listItem.measure(0, 0); // 统计所有子项的总高度 totalHeight += listItem.getMeasuredHeight(); } ViewGroup.LayoutParams params = listView.getLayoutParams(); params.height = totalHeight + (listView.getDividerHeight() * (adapter.getCount() - 1)); // listView.getDividerHeight()获取子项间分隔符占用的高度 // params.height最后得到整个ListView完整显示需要的高度 listView.setLayoutParams(params); }
@Override public View getView(final int position, final View convertView, final ViewGroup parent) { return mDecoratedBaseAdapter.getView(position, convertView, parent); }
@Override public View getView(int position, View convertView, ViewGroup parent) { return mWrappedBase.getView(position, convertView, parent); }