@@ -57,6 +57,7 @@ public class HorizontalListView extends AdapterView<ListAdapter> {
5757 private Queue <View > mRemovedViewQueue = new LinkedList <View >();
5858 private OnItemSelectedListener mOnItemSelected ;
5959 private OnItemClickListener mOnItemClicked ;
60+ private OnItemLongClickListener mOnItemLongClicked ;
6061 private boolean mDataChanged = false ;
6162
6263
@@ -86,6 +87,11 @@ public void setOnItemClickListener(AdapterView.OnItemClickListener listener){
8687 mOnItemClicked = listener ;
8788 }
8889
90+ @ Override
91+ public void setOnItemLongClickListener (AdapterView .OnItemLongClickListener listener ) {
92+ mOnItemLongClicked = listener ;
93+ }
94+
8995 private DataSetObserver mDataObserver = new DataSetObserver () {
9096
9197 @ Override
@@ -353,8 +359,27 @@ public boolean onSingleTapConfirmed(MotionEvent e) {
353359 return true ;
354360 }
355361
356-
357-
362+ @ Override
363+ public void onLongPress (MotionEvent e ) {
364+ Rect viewRect = new Rect ();
365+ int childCount = getChildCount ();
366+ for (int i = 0 ; i < childCount ; i ++) {
367+ View child = getChildAt (i );
368+ int left = child .getLeft ();
369+ int right = child .getRight ();
370+ int top = child .getTop ();
371+ int bottom = child .getBottom ();
372+ viewRect .set (left , top , right , bottom );
373+ if (viewRect .contains ((int ) e .getX (), (int ) e .getY ())) {
374+ if (mOnItemLongClicked != null ) {
375+ mOnItemLongClicked .onItemLongClick (HorizontalListView .this , child , mLeftViewIndex + 1 + i , mAdapter .getItemId (mLeftViewIndex + 1 + i ));
376+ }
377+ break ;
378+ }
379+
380+ }
381+ }
382+
358383 };
359384
360385
0 commit comments