Android - 滑动刷新中的 ListView
Android - ListView in Swipe Refresh
我实现了覆盖整个屏幕的自定义布局。在此布局中,用户可以在运行时向布局添加多个列表视图。此外,我对包含自定义布局的片段进行了滑动刷新。
问题是如果我尝试下拉列表视图,则会触发滑动刷新并且我无法在列表视图中导航。我试图通过“listView.requestDisallowInterceptTouchEvent(true);
”禁止拦截,并希望如果触摸列表视图,这将防止触发滑动刷新。不幸的是,这没有成功(根本没有行为改变)。我该怎么做才能实际使用多个列表视图和滑动刷新?
问题说明:
提前致谢!
我通过添加一个子类 "ScrollableListView extends ListView" 并将 SwipeRefresh 引用传递给每个 ScrollableListView 来解决它。然后,我启用或禁用 swipeRefresh 如下:
@Override
public boolean onInterceptTouchEvent(MotionEvent ev){
this.onTouchEvent(ev);
return false;
}
@Override
public boolean onTouchEvent(MotionEvent ev){
switch (ev.getAction()){
case MotionEvent.ACTION_DOWN:
analyzer.setRefreshSwipeEnabled(false);
break;
case MotionEvent.ACTION_UP:
analyzer.setRefreshSwipeEnabled(true);
break;
case MotionEvent.ACTION_BUTTON_RELEASE:
case MotionEvent.ACTION_CANCEL:
case MotionEvent.ACTION_HOVER_EXIT:
analyzer.setRefreshSwipeEnabled(true);
break;
}
return super.onTouchEvent(ev);
}
"Analyzer"是我的主要activity,里面有下面的方法
/**
* Enables or disables the swipe refresh
* @param isEnabled
*/
public void setRefreshSwipeEnabled(boolean isEnabled){
swipeRefresh.setEnabled(isEnabled);
}
我实现了覆盖整个屏幕的自定义布局。在此布局中,用户可以在运行时向布局添加多个列表视图。此外,我对包含自定义布局的片段进行了滑动刷新。
问题是如果我尝试下拉列表视图,则会触发滑动刷新并且我无法在列表视图中导航。我试图通过“listView.requestDisallowInterceptTouchEvent(true);
”禁止拦截,并希望如果触摸列表视图,这将防止触发滑动刷新。不幸的是,这没有成功(根本没有行为改变)。我该怎么做才能实际使用多个列表视图和滑动刷新?
问题说明:
提前致谢!
我通过添加一个子类 "ScrollableListView extends ListView" 并将 SwipeRefresh 引用传递给每个 ScrollableListView 来解决它。然后,我启用或禁用 swipeRefresh 如下:
@Override
public boolean onInterceptTouchEvent(MotionEvent ev){
this.onTouchEvent(ev);
return false;
}
@Override
public boolean onTouchEvent(MotionEvent ev){
switch (ev.getAction()){
case MotionEvent.ACTION_DOWN:
analyzer.setRefreshSwipeEnabled(false);
break;
case MotionEvent.ACTION_UP:
analyzer.setRefreshSwipeEnabled(true);
break;
case MotionEvent.ACTION_BUTTON_RELEASE:
case MotionEvent.ACTION_CANCEL:
case MotionEvent.ACTION_HOVER_EXIT:
analyzer.setRefreshSwipeEnabled(true);
break;
}
return super.onTouchEvent(ev);
}
"Analyzer"是我的主要activity,里面有下面的方法
/**
* Enables or disables the swipe refresh
* @param isEnabled
*/
public void setRefreshSwipeEnabled(boolean isEnabled){
swipeRefresh.setEnabled(isEnabled);
}