下面列出了怎么用android.widget.AbsListView的API类实例代码及写法,或者点击链接到github查看源代码。
@Override
public void onFocusChanged(View oldFocus, View newFocus) {
try {
if (newFocus instanceof AbsListView) {
return;
}
AnimatorSet animatorSet = new AnimatorSet();
animatorSet.setInterpolator(new DecelerateInterpolator(1));
animatorSet.setDuration(mDurationTraslate);
animatorSet.playTogether(mAnimatorList);
for (Animator.AnimatorListener listener : mAnimatorListener) {
animatorSet.addListener(listener);
}
mAnimatorSet = animatorSet;
if (oldFocus == null) {
animatorSet.setDuration(0);
mTarget.setVisibility(View.VISIBLE);
}
animatorSet.start();
} catch (Exception ex) {
ex.printStackTrace();
}
}
public boolean canChildScrollDown() {
if (android.os.Build.VERSION.SDK_INT < 14) {
if (mTarget instanceof AbsListView) {
final AbsListView absListView = (AbsListView) mTarget;
try {
if (absListView.getCount() > 0) {
if (absListView.getLastVisiblePosition() + 1 == absListView.getCount()) {
int lastIndex = absListView.getLastVisiblePosition() - absListView.getFirstVisiblePosition();
return absListView.getChildAt(lastIndex).getBottom() == absListView.getPaddingBottom();
}
}
} catch (Exception e) {
e.printStackTrace();
}
return true;
} else {
return true;
}
} else {
return ViewCompat.canScrollVertically(mTarget, 1);
}
}
@Override
public void onScroll(AbsListView paramAbsListView, int paramInt1, int paramInt2, int paramInt3) {
Log.d(TAG, "onScroll");
if (mHeaderView != null && !isHideHeader && isEnableZoom) {
float f = mHeaderHeight - mHeaderContainer.getBottom();
Log.d(TAG, "f = " + f);
if (isParallax) {
if ((f > 0.0F) && (f < mHeaderHeight)) {
int i = (int) (0.65D * f);
mHeaderContainer.scrollTo(0, -i);
} else if (mHeaderContainer.getScrollY() != 0) {
mHeaderContainer.scrollTo(0, 0);
}
}
}
if (mOnScrollListener != null) {
mOnScrollListener.onScroll(paramAbsListView, paramInt1, paramInt2, paramInt3);
}
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (this.mOnScrollListener != null
&& refreshState != RefreshState.Refreshing) {
this.mOnScrollListener.onScrollStateChanged(view, scrollState);
}
switch (scrollState) {
// 当不滚动�?
case OnScrollListener.SCROLL_STATE_IDLE:
// 判断滚动到底�?
if (this.getLastVisiblePosition() == (this.getCount() - 1)) {
}
// 判断滚动到顶�?
if (this.getFirstVisiblePosition() == 0) {
mIsTop = true;
} else {
mIsTop = false;
}
break;
}
}
private void initExpandAnimator(Activity activity, int defaultHeight, int gravity) {
Display display = activity.getWindowManager().getDefaultDisplay();
int displayHeight = display.getHeight() - Utils.getStatusBarHeight(activity);
if (defaultHeight == 0) {
defaultHeight = (displayHeight * 2) / 5;
}
final View view = holder.getInflatedView();
if (!(view instanceof AbsListView)) {
return;
}
final AbsListView absListView = (AbsListView) view;
view.setOnTouchListener(ExpandTouchListener.newListener(
activity, absListView, contentContainer, gravity, displayHeight, defaultHeight
));
}
@Override
public void onDestroyView() {
super.onDestroyView();
// Cancel any outstanding thumbnail requests
final ViewGroup target = (mListView.getAdapter() != null) ? mListView : mGridView;
final int count = target.getChildCount();
for (int i = 0; i < count; i++) {
final View view = target.getChildAt(i);
mRecycleListener.onMovedToScrapHeap(view);
}
// Tear down any selection in progress
mListView.setChoiceMode(AbsListView.CHOICE_MODE_NONE);
mGridView.setChoiceMode(AbsListView.CHOICE_MODE_NONE);
}
/**
* Searches for the list view, which is contained by the dialog, in order to register a scroll
* listener.
*
* @param view The view, which should be searched, as an instance of the class {@link ViewGroup}.
* The view may not be null
*/
private boolean findListOrRecyclerView(@NonNull final View view) {
if (view instanceof AbsListView) {
this.listView = (AbsListView) view;
this.listView.setOnScrollListener(createListViewScrollListener());
return true;
} else if (view instanceof RecyclerView) {
this.recyclerView = (RecyclerView) view;
this.recyclerView.addOnScrollListener(createRecyclerViewScrollListener());
return true;
} else if (view instanceof ViewGroup) {
ViewGroup viewGroup = (ViewGroup) view;
for (int i = 0; i < viewGroup.getChildCount(); i++) {
if (findListOrRecyclerView(viewGroup.getChildAt(i))) {
return true;
}
}
}
return false;
}
private int getScrollY(AbsListView view) {
View child = view.getChildAt(0);
if (child == null) {
return 0;
}
int firstVisiblePosition = view.getFirstVisiblePosition();
int top = child.getTop();
int headerHeight = 0;
if (firstVisiblePosition >= 1) {
headerHeight = mStickHeaderHeight;
}
return -top + firstVisiblePosition * child.getHeight() + headerHeight;
}
public final void onScroll(final AbsListView view, final int firstVisibleItem, final int visibleItemCount,
final int totalItemCount) {
if (DEBUG) {
Log.d(LOG_TAG, "First Visible: " + firstVisibleItem + ". Visible Count: " + visibleItemCount
+ ". Total Items:" + totalItemCount);
}
/**
* Set whether the Last Item is Visible. lastVisibleItemIndex is a
* zero-based index, so we minus one totalItemCount to check
*/
if (null != mOnLastItemVisibleListener) {
mLastItemVisible = (totalItemCount > 0) && (firstVisibleItem + visibleItemCount >= totalItemCount - 1);
}
// If we're showing the indicator, check positions...
if (getShowIndicatorInternal()) {
updateIndicatorViewsVisibility();
}
// Finally call OnScrollListener if we have one
if (null != mOnScrollListener) {
mOnScrollListener.onScroll(view, firstVisibleItem, visibleItemCount, totalItemCount);
}
}
@Override
public
void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
ListView listView = getListView();
registerForContextMenu(listView);
listView.post(new LoadFavourites());
listView.setChoiceMode(AbsListView.CHOICE_MODE_MULTIPLE_MODAL);
listView.setMultiChoiceModeListener(new MultiModeListenerFavourites(listView, getResources()));
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
switch (scrollState) {
case AbsListView.OnScrollListener.SCROLL_STATE_IDLE:
break;
case AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:
break;
case AbsListView.OnScrollListener.SCROLL_STATE_FLING:
break;
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
if (isDropDownStyle) {
if (currentScrollState == SCROLL_STATE_TOUCH_SCROLL && currentHeaderStatus != HEADER_STATUS_LOADING) {
if (firstVisibleItem == 0 && actionMovePointY - actionDownPointY > 0
&& mOffset == PAGE_MESSAGE_COUNT) {
onDropDown();
}
} else if (currentScrollState == SCROLL_STATE_FLING && firstVisibleItem == 0
&& currentHeaderStatus != HEADER_STATUS_LOADING) {
/**
* when state of ListView is SCROLL_STATE_FLING(ListView is scrolling but finger has leave screen) and
* first item(header layout) is visible and header status is not HEADER_STATUS_LOADING, then hide first
* item, set second item visible and set hasReachedTop true.
*/
if (mOffset == PAGE_MESSAGE_COUNT){
onDropDown();
}
hasReachedTop = true;
} else if (currentScrollState == SCROLL_STATE_FLING && hasReachedTop) {
setSelection(0);
}
}
if (onScrollListener != null) {
onScrollListener.onScroll(view, firstVisibleItem, visibleItemCount, totalItemCount);
}
}
private int getListPosition(AbsListView listView) {
View view = ListViewUtils.getRootViewInList(this);
if (view != null) {
return listView.getPositionForView(view);
} else {
return AbsListView.INVALID_POSITION;
}
}
public static void setAbsListViewHeight(AbsListView absListView, int lineNumber, int verticalSpace) {
int totalHeight = getAbsListViewHeight(absListView, lineNumber, verticalSpace);
LayoutParams params = absListView.getLayoutParams();
params.height = totalHeight;
((MarginLayoutParams) params).setMargins(0, 0, 0, 0);
absListView.setLayoutParams(params);
}
private void initView() {
this.mListHeaderBtn = new Button(this);
this.mChapterLV = (ListView) findViewById(R.id.isi_chapter_lv);
this.mListHeaderBtn.setLayoutParams(new AbsListView.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
this.mListHeaderBtn.setText("示例");
}
@Override
protected TextView createItemView(int position) {
TextView v = new TextView(getContext());
v.setTextColor(ResTools.getColor(R.color.text));
v.setTextSize(TypedValue.COMPLEX_UNIT_PX, (int)ResTools.getDimen(R.dimen.textsize2));
v.setGravity(Gravity.CENTER_VERTICAL);
int hp = (int)ResTools.getDimen(R.dimen.hor_padding);
int vp = (int)ResTools.getDimen(R.dimen.vtl_padding);
v.setPadding(hp,vp,hp,vp);
v.setOnClickListener(CrashRecordWindow.this);
v.setLayoutParams(new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, (int)ResTools.getDimen(R.dimen.item_height)));
v.setBackgroundResource(R.drawable.list_item_bg);
return v;
}
void bindCamera(){
mItemView.setLayoutParams(new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, mImageSize)); //让图片是个正方形
mItemView.setTag(null);
mItemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!((ImageBaseActivity) mActivity).checkPermission(Manifest.permission.CAMERA)) {
ActivityCompat.requestPermissions(mActivity, new String[]{Manifest.permission.CAMERA}, ImageGridActivity.REQUEST_PERMISSION_CAMERA);
} else {
imagePicker.takePicture(mActivity, ImagePicker.REQUEST_CODE_TAKE);
}
}
});
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount,
int totalItemCount) {
if (mOnScrollListener != null) {
mOnScrollListener.onScroll(view, firstVisibleItem, visibleItemCount, totalItemCount);
}
super.onScroll(view, firstVisibleItem, visibleItemCount, totalItemCount);
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
listview.onScrollStateChanged(view, scrollState);
// 当不滚动时
if (scrollState == SCROLL_STATE_IDLE) {
// 判断滚动到底部
if (!IS_LOADING
&& view.getLastVisiblePosition() == (view.getCount() - 1)) {
Log.e("TAG", "loading。。。");
IS_LOADING = true;
getMore();
}
}
}
@Override
@SuppressWarnings("deprecation")
public View getView(int position, View convertView, ViewGroup parent) {
ListViewHolder holder = null;
ListItem listItem = listItems.get(position);
if (convertView == null) {
LayoutInflater vi = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = vi.inflate(R.layout.list_item, null);
LinearLayout textViewWrap = (LinearLayout) convertView.findViewById(R.id.text_wrap);
TextView text = (TextView) convertView.findViewById(R.id.text);
holder = new ListViewHolder(text);
// setViewWrap IS REQUIRED
holder.setViewWrap(textViewWrap);
} else {
holder = (ListViewHolder) convertView.getTag();
}
// THIS IS REQUIRED
holder.getViewWrap().setLayoutParams(new AbsListView.LayoutParams(LayoutParams.MATCH_PARENT, listItem.getCurrentHeight()));
holder.getTextView().setText(listItem.getText());
holder.getTextView().setCompoundDrawablesWithIntrinsicBounds(listItem.getDrawable(), 0, 0, 0);
convertView.setTag(holder);
// setHolder IS REQUIRED
listItem.setHolder(holder);
return convertView;
}
public static boolean canScrollLeft(@NonNull View targetView) {
if (android.os.Build.VERSION.SDK_INT < 14) {
if (targetView instanceof AbsListView) {
final ViewGroup viewGroup = (ViewGroup) targetView;
final AbsListView absListView = (AbsListView) targetView;
return viewGroup.getChildCount() > 0
&& (absListView.getFirstVisiblePosition() > 0
|| viewGroup.getChildAt(0).getTop() < targetView.getPaddingTop());
} else {
return targetView.getScrollY() > 0;
}
} else {
return targetView.canScrollHorizontally(-1);
}
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
boolean enabled = scrollState == SCROLL_STATE_IDLE;
if (enabled) {
enabled = view.getFirstVisiblePosition() == 0;
if (view.getChildAt(0) != null)
enabled &= view.getChildAt(0).getTop() == 0;
}
mSwipeRefreshLayout.setEnabled(enabled);
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
displayImage(view);
}
}
private void initView() {
this.mListHeaderBtn = new Button(this);
this.mChapterLV = (ListView) findViewById(R.id.isi_chapter_lv);
this.mListHeaderBtn.setLayoutParams(new AbsListView.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT));
this.mListHeaderBtn.setText("示例");
}
public void onScrollStateChanged(AbsListView view, int scrollState) {
switch (scrollState) {
case 0:
if (this.this$0.saleNoteList != null && this.this$0.mAdapter != null && !this.this$0.isRequestData) {
this.mTotalItemCount = this.mFirstVisibleItem + this.mVisibleItemCount;
if (this.this$0.mListView.getFooterViewsCount() > 0) {
this.mTotalItemCount--;
}
if (this.mTotalItemCount >= this.this$0.saleNoteList.size() && this.mTotalItemCount < Integer.parseInt(this.this$0.saleNoteList.totalCount)) {
if (this.this$0.isNetErr) {
this.this$0.showFooterLoading();
this.this$0.isNetErr = false;
}
this.this$0.currentPage = this.this$0.currentPage + 1;
this.this$0.requestConsumerRecords(this.this$0.currentPage);
return;
} else if (this.this$0.mListView.getFooterViewsCount() > 0 && this.mTotalItemCount >= Integer.parseInt(this.this$0.saleNoteList.totalCount)) {
this.this$0.removeFooterView();
return;
} else {
return;
}
}
return;
default:
return;
}
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
switch (scrollState) {
case SCROLL_STATE_IDLE:
mTime = INVALID_TIME;
setVelocity(0);
break;
default:
break;
}
}
@Override
public void convert(CommonViewHolder viewHolder, CountryNode item) {
final TextView tv_name = viewHolder.getView(R.id.name);
final ImageView iv_sel_icon = viewHolder.getView(R.id.icon);
if(item.isRoot)
{
viewHolder.getConvertView().setLayoutParams(
new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, rootHeight));
viewHolder.getConvertView().setBackgroundResource(R.color.atom_ui_light_gray_ee);
tv_name.setTextSize(TypedValue.COMPLEX_UNIT_SP, 13);
iv_sel_icon.setVisibility(View.GONE);
tv_name.setText(item.name);
}
else {
tv_name.setText(item.name);
tv_name.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18);
viewHolder.getConvertView().setLayoutParams(
new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, nodeHeight));
if(item.resourceId == selectId)
{
iv_sel_icon.setVisibility(View.VISIBLE);
}
else {
iv_sel_icon.setVisibility(View.INVISIBLE);
}
viewHolder.getConvertView().setBackgroundResource(R.color.atom_ui_white);
}
}
public View getView(int position, View convertView, ViewGroup parent) {
SimpleMonthView v;
HashMap<String, Integer> drawingParams = null;
if (convertView != null) {
v = (SimpleMonthView) convertView;
drawingParams = (HashMap<String, Integer>) v.getTag();
} else {
v = new SimpleMonthView(mContext);
v.setLayoutParams(new AbsListView.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
v.setClickable(true);
v.setOnDayClickListener(this);
}
if (drawingParams == null) {
drawingParams = new HashMap<String, Integer>();
}
drawingParams.clear();
final int month = position % MONTHS_IN_YEAR;
final int year = position / MONTHS_IN_YEAR + mController.getMinYear();
int selectedDay = -1;
if (isSelectedDayInMonth(year, month)) {
selectedDay = mSelectedDay.day;
}
v.reuse();
drawingParams.put(SimpleMonthView.VIEW_PARAMS_SELECTED_DAY, selectedDay);
drawingParams.put(SimpleMonthView.VIEW_PARAMS_YEAR, year);
drawingParams.put(SimpleMonthView.VIEW_PARAMS_MONTH, month);
drawingParams.put(SimpleMonthView.VIEW_PARAMS_WEEK_START, mController.getFirstDayOfWeek());
v.setMonthParams(drawingParams);
v.invalidate();
return v;
}
public static boolean reachedListEnds(AbsListView listView) {
boolean flag;
if (reachedListTop(listView) || reachedListBottom(listView)) {
flag = true;
} else {
flag = false;
}
return flag;
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (mOnScrollListener != null) {
mOnScrollListener.onScrollStateChanged(view, scrollState);
}
if (DEBUG) {
Log.v(TAG, "onScrollStateChanged() scrollState=" + scrollState);
}
if (SCROLL_STATE_IDLE == scrollState) {
checkAutoRefresh();
}
}