Jor*_*n H 2 android gridview textview ontouchlistener
我已经设置了一个具有TextViews的GridView,我想在触摸时更改文本视图的背景,然后在释放时重置背景.网格视图已经具有OnItemClick和OnItemLongClick侦听器.我已经通过为GridView设置OnTouch监听器为触摸的文本视图实现了背景交换,然后我获得了触摸的位置并用于getChildAt获取被触摸的文本视图.这非常有效,直到我滚动网格视图.因为文本视图被重用,getChildAt所以返回错误的文本视图,所以我在那种情况下改变了错误文本视图的背景.
如何始终获取正确的文本视图,或者是否有办法为每个文本视图设置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!
...
Run Code Online (Sandbox Code Playgroud)
小智 5
您可以使用它getFirstVisiblePosition来检索第一个孩子的偏移量
int firstPosition = gridView.getFirstVisiblePosition();
int childPosition = position - firstPosition;
TextView txtView = (TextView)gridView.getChildAt(childPosition);
Run Code Online (Sandbox Code Playgroud)
这应该给你正确的位置.当然,你应该检查一下是否childPosition真的是一个有效的位置(即不是<0或>=gridView.getChildCount())
| 归档时间: |
|
| 查看次数: |
1714 次 |
| 最近记录: |