以下兩種方案都親測可行:
方案一:(無動畫)
listView.setSelection(問題14的position);
方案二:(帶動畫)
ListView lvBaseList添加問題14后調用
安卓手機的屏幕鏡像在哪。final int targetPosition = 2;//假設你要置頂的ItemView的position = 2
final long targetId = adapter.getItemId(targetPosition);
View child = getTargetView(lvBaseList, targetId);
final boolean isVisible = child != null;
if (isVisible) {//問題14已顯示
Log.d(TAG, "lvBaseList.onItemClick isVisible = true >> ");
安卓自定義view的步驟。Log.d(TAG, "lvBaseList.onItemClick lvBaseList.getY() = " + (int) lvBaseList.getY());
Log.d(TAG, "lvBaseList.onItemClick child.getY() = " + (int) child.getY());
lvBaseList.smoothScrollBy((int) (child.getY() - lvBaseList.getY()), 200);
return;
}
//問題14未顯示
安卓開發findview、Log.d(TAG, "lvBaseList.onItemClick isVisible = false >> ");
lvBaseList.smoothScrollToPosition(targetPosition + lvBaseList.getHeaderViewsCount());
lvBaseList.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if (scrollState == SCROLL_STATE_IDLE) {
android view。lvBaseList.setOnScrollListener(null);//避免影響正常滾動
View child = getTargetView(lvBaseList, targetId);
if (child == null) {
Log.e(TAG, "lvBaseList.onItemClick child == null >> return;");
return;
}
android。Log.d(TAG, "lvBaseList.onItemClick lvBaseList.getY() = " + (int) lvBaseList.getY());
Log.d(TAG, "lvBaseList.onItemClick child.getY() = " + (int) child.getY());
// lvBaseList.scrollListBy((int) (child.getY() - lvBaseList.getY()));//可行,無動畫
lvBaseList.smoothScrollBy((int) (child.getY() - lvBaseList.getY()), 200);
}
}
android自定義view的三大流程。@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
}
});
需要用到的函數:
//根據targetId獲取childView
android cardview?private View getTargetView(ListView lvBaseList, long targetId) {
View child = null;
MomentView itemView;//MomentView相當于ViewHolder,里面存放item數據或者itemId
MomentItem item;
for (int i = 0; i < lvBaseList.getChildCount(); i++) {
child = lvBaseList.getChildAt(i);
android 自定義view、itemView = child == null ? null : (MomentView) child.getTag();
item = itemView == null ? null : itemView.getData();
Log.d(TAG, "lvBaseList.onItemClick item.getId() = " + (item == null ? 0 : item.getId()) + "; targetId = " + targetId);
if (item != null && item.getId() == targetId) {
Log.d(TAG, "lvBaseList.onItemClick item != null && item.getId() == targetId >> break;");
break;
android textview?}
child = null;
}
return child;
}
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态