Android 横向ListView实现,kotlin底层源码

该博客详细介绍了如何使用Kotlin构建一个HorizontalListView,包括构造函数、初始化方法、事件监听器设置、数据适配器操作等。通过源码解析,展示了滚动、触摸事件处理及长按、点击事件的响应机制。
摘要由CSDN通过智能技术生成

public HorizontalListView(Context context, AttributeSet attrs) {

super(context, attrs);

initView();

}

private synchronized void initView() {

mLeftViewIndex = -1;

mRightViewIndex = 0;

mDisplayOffset = 0;

mCurrentX = 0;

mNextX = 0;

mMaxX = Integer.MAX_VALUE;

mScroller = new Scroller(getContext());

mGesture = new GestureDetector(getContext(), mOnGesture);

}

@Override

public void setOnItemSelectedListener(OnItemSelectedListener listener) {

mOnItemSelected = listener;

}

@Override

public void setOnItemClickListener(OnItemClickListener listener){

mOnItemClicked = listener;

}

@Override

public void setOnItemLongClickListener(OnItemLongClickListener listener) {

mOnItemLongClicked = listener;

}

private DataSetObserver mDataObserver = new DataSetObserver() {

@Override

public void onChanged() {

synchronized(HorizontalListView.this){

mDataChanged = true;

}

invalidate();

requestLayout();

}

@Override

public void onInvalidated() {

reset();

invalidate();

requestLayout();

}

};

public boolean onInterceptTouchEvent(MotionEvent ev) {

getParent().requestDisallowInterceptTouchEvent(true);

return mGesture.onTouchEvent(ev);

};

@Override

public ListAdapter getAdapter() {

return mAdapter;

}

@Override

public View getSelectedView() {

return null;

}

@Override

public void setAdapter(ListAdapter adapter) {

if(mAdapter != null) {

mAdapter.unregisterDataSetObser

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值