コード例 #1
0
 @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);
   }
 }
コード例 #2
0
ファイル: Utility.java プロジェクト: jasperWang/Boqii-Theme
  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);
  }
コード例 #3
0
    @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;
    }
コード例 #4
0
  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);
    }
  }
コード例 #5
0
 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);
   }
 }
コード例 #6
0
ファイル: ListHeightUtil.java プロジェクト: hOlMoo/FanAndroid
 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);
 }
コード例 #7
0
  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);
  }
コード例 #8
0
ファイル: SeparatedListAdapter.java プロジェクト: sd/droidkit
  /** {@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;
  }
コード例 #9
0
  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);
  }
コード例 #10
0
 @Override
 public View getView(final int position, final View convertView, final ViewGroup parent) {
   return mDecoratedBaseAdapter.getView(position, convertView, parent);
 }
コード例 #11
0
 @Override
 public View getView(int position, View convertView, ViewGroup parent) {
   return mWrappedBase.getView(position, convertView, parent);
 }