我已經設置了一個具有TextViews的GridView,我想在觸摸時更改文本視圖的背景,然後在釋放後重置背景。網格視圖已經有OnItemClick和OnItemLongClick監聽器。通過爲GridView設置OnTouch偵聽器,我實現了觸摸文本視圖的後臺交換,然後獲取觸摸的位置並使用getChildAt
獲取觸摸的文本視圖。這真的很好,直到我滾動網格視圖。由於文本視圖被重用,getChildAt
返回了錯誤的文本視圖,所以我在這種情況下改變了錯誤文本視圖的背景。getChildAt在GridView中返回不正確的視圖
我該如何獲取正確的文本視圖,或者是否有方法爲每個文本視圖設置OnTouch偵聽器,而不是在觸摸網格視圖後嘗試獲取文本視圖?
gridView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
float currentXPosition = event.getX();
float currentYPosition = event.getY();
int position = gridView.pointToPosition((int) currentXPosition, (int) currentYPosition);
if (gridView.getChildAt(position) != null) {
TextView txtView = (TextView)gridView.getChildAt(position);
//might not be the right text view!
...