2012-07-09 69 views
1

我基本上试图禁用滚动列表视图时,用户触摸列表标题和执行MotionEvent.ACTION_MOVE监听onTouch事件并禁用滚动ListView

如果你想知道为什么这个疯狂的实施? - 我基本上在我的listView标题上构建了一个自定义搜索栏,它在MotionEvent.ACTION_MOVE上工作,并且由于视图是列表视图的标题,它不应该滚动,直到用户从此自定义标题视图中脱离触摸为止。

所以我的问题是/。

现在我有2个java类。活动(具有此列表视图)和自定义标题(这是View实施OnTouchListener)。

  1. 我如何通过价值时,我的头视图触摸到这个列表视图(活动)来禁用滚动?
  2. 似乎可以通过重写dispatchTouchEvent来禁用列表视图滚动,如here。由于我不是一个自定义listView有可能在活动类本身中禁用?

对不起,我只是在学习,所以请不要介意我的新手。

回答

1

好吧,我问了一个问题,所以我回答了我的问题的前半部分。

如何在我的标题视图被触摸时将值传递给此列表视图(活动)以禁用滚动?

我在创建interface时得到了我的解决方案。所以我创建了一个public static interface,它有一个public void headerTouched(Boolean touchEvent);方法。我的代码为listView的类是implementer,因此它会自动覆盖接口类中的此方法。我在这个类中创建了一个私有变量(在我的情况下:boolean),它监听从驱动程序类返回的布尔值。我的驱动程序类是具有此接口对象的HeaderView,并通过它来设置值。为了帮助界面上的新手,我在下面发布了我的代码。

接口类

public static interface HeaderTouchListener{ 
    public void headerTouched(Boolean touchEvent); 
} 

实施者类

private boolean headerTouched = false; 
public void headerTouched(Boolean touchEvent) { 
    headerTouched = touchEvent; 
} 

驱动程序类

HeaderTouchListener touchListner = new ImplementerClassName(); 
touchListner.headerTouched(true); 

我仍然无法弄清楚如何在列表视图中禁用滚动。更多关于它的信息,请按照这个问题Set dispatchTouchEvent for List View without creating custom List View class. (for disabling scroll)