Android - 刷卡刷新中的ListView

时间:2016-03-16 11:54:20

标签: android listview refresh swipe

我实现了一个覆盖整个屏幕的自定义布局。在此布局中,用户可以在运行时向布局添加多个列表视图。另外,我对包含自定义布局的片段进行了刷卡刷新。

问题是如果我尝试下拉列表视图,则会触发刷卡刷新,而我无法在列表视图中导航。我试图通过" listView.requestDisallowInterceptTouchEvent(true);"禁止拦截。如果触摸列表视图,希望这可以防止触发刷卡。不幸的是,这没有成功(根本没有行为改变)。如何实际使用多个列表视图和刷卡刷新? 问题的一个例子:

提前谢谢!

enter image description here

1 个答案:

答案 0 :(得分:0)

我通过添加子类来解决它" ScrollableListView扩展了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);
    }

"分析器"是我的主要活动,有以下方法

/**
 * Enables or disables the swipe refresh
 * @param isEnabled
 */
public void setRefreshSwipeEnabled(boolean isEnabled){
    swipeRefresh.setEnabled(isEnabled);
}