在寫一個東西滑動刪除列表的時候,出現了一個問題。個人需求是,左滑而後出現delete,而後點擊delete,讓該滑塊消失。
我在點列表的第一行的時候,左滑,出現delete,點擊刪除,ok的,完美。而後我點擊第三個,一樣左滑出現delete,點擊delete沒有任何反應。
而後我再點擊第一個,又能夠刪除。
模型以下:
子模型:
java
ps:spa
黑色的是最外層,藍色的是在黑塊中,而後delete區域在滑塊區。滑動是控制藍色區域的移動。
若是僅僅是這樣,我一點也不慌。出現了一些東西,更加我讓疑惑。delete的groupview 容器點擊是有效的,也就是藍色區域可點擊的,我用它來點擊添加item,這一樣也給我提供了線索。
調試
在我心中產生了兩個個疑問:code
對於第一個疑問,我嘗試檢測是否綁定了,固然不可能去調試看了,由於list嘛,都一個樣,查看xy座標的話,腦袋痛。對象
// holder.tvMsgRemindDelete 是獲取到delete對象 holder.tvMsgRemindDelete.setText("你好啊");
我將拿到的delete view,而後修改它的text。
固然確定是沒用的,我寫完的時候就感受不對勁,然而還抱着一絲但願。
由於若是變成第一個的話,那麼是能夠點擊刪除的,確定綁定了事件哈。
對於第二個疑問,父類groupview 能夠點擊,我就猜測是不是父類的groupview 阻止了該分發事件。(通常狀況是不會阻止的,然而我作的這個滑動較爲複雜,自我安慰一下)
是否分發到子元素,涉及到blog
1. onInterceptTouchEvent 2. dispatchTouchEvent
這兩個事件,一個是分發,一個是攔截。
而後找到[ACTION_DOWN,ACTION_UP]判斷事件是經過這兩個判斷的。
而後真的發現:return inView(x, y)
ps:事件
inView 是我用來判斷是當前x,y軸是否在滑塊中,也就是藍色塊中。
前面將delete放在外面,以下:
忘記改而後形成了這個問題。
it
點擊無效的時候,不只要查閱自身事件,一樣也須要查詢事件分發機制,看看是否哪一個土匪攔截了,固然土匪通常是本身創造的。class