国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

SwipeRefreshLayout下拉刷新跟listview下拉滑動沖突解決

2019-11-09 18:34:25
字體:
來源:轉載
供稿:網友
當SwipeRefreshLayout內嵌listview的時候,滑動listview的時會啟動swipeRefreshLayout的下拉刷新。我使用的解決辦
法是設置listview的滑動監聽,重寫滑動監聽器,通過判斷listview的第一可視item的index來判斷是否需要刷新,如果不
需要就把swipeRefreshLayout設置成不可滑動,否則設置成可滑動。
我的listview放在了fragment里面,所以我用了最笨的方法,在fragment的構造方法里把activity的swipeRefreshLayout
對象傳遞給了fragment:
MyManageFragment 
manageFragment = new MyManageFragment(
swipeRefreshLayout
);
transation.add(R.id.activity_mydevice_container, manageFragment);
transation.commit();
然后在fragment的onCreateView里面設置其listview的滑動監聽:
listview.setOnScrollListener(new SwpipeListViewOnScrollListener(swipeRefreshLayout));
   然后重寫滑動監聽器,通過判斷listview的第一個可視的item的位置來決定是下拉刷新還是下滑,判斷到是下滑的時候,
通過設置傳入的
swipeRefreshLayout對象
使其不可用: 
swipeRefreshLayout
.setEnabled(false);
重寫監聽器:
/** * 由于Listview與下拉刷新的Scroll事件沖突, 使用這個ScrollListener可以避免Listview滑動異常 */public class SwpipeListViewOnScrollListener implements AbsListView.OnScrollListener {    PRivate SwipeRefreshLayout mSwipeView;    private AbsListView.OnScrollListener mOnScrollListener;    public SwpipeListViewOnScrollListener(SwipeRefreshLayout swipeView) {        mSwipeView = swipeView;    }    public SwpipeListViewOnScrollListener(SwipeRefreshLayout swipeView,                                          AbsListView.OnScrollListener onScrollListener) {        mSwipeView = swipeView;        mOnScrollListener = onScrollListener;    }    @Override    public void onScrollStateChanged(AbsListView absListView, int i) {    }    @Override    public void onScroll(AbsListView absListView, int firstVisibleItem,                         int visibleItemCount, int totalItemCount) {        View firstView = absListView.getChildAt(firstVisibleItem);        // 當firstVisibleItem是第0位。如果firstView==null說明列表為空,需要刷新;或者top==0說明已經到達列表頂部, 也需要刷新        if (firstVisibleItem == 0 && (firstView == null || firstView.getTop() == 0)) {            mSwipeView.setEnabled(true);//可刷新            } else {            mSwipeView.setEnabled(false);//不能刷新,此時為滑動        }        if (null != mOnScrollListener) {            mOnScrollListener.onScroll(absListView, firstVisibleItem,                    visibleItemCount, totalItemCount);        }    }}
PS: 一開始想在activity里獲取到frgment里面的listview對象,在activity里設置listview的滑動監聽器,但是沒有成功,對
于fragment和activity的交互,理解還不是很夠。
MyManageFragment 
manageFragment = new MyManageFragment(
);
transation.add(R.id.activity_mydevice_container, manageFragment,"mymanage_fragment");
transation.commit();
getSupportFragmentManager().executePendingTransactions(); //1--------------MymanageFragment myManageFragment = (MymanageFragment) getSupportFragmentManager().findFragmentByTag("mymanage_fragment");if (myManageFragment != null) {    ListView listView = (ListView) myManageFragment.getView().findViewById(R.id.listview_mymanage);    listView.setOnScrollListener(new SwpipeListViewOnScrollListener(swipeRefreshLayout));} else {    toast("myManageFragment is null");}
其中 myManageFragment.getView()返回的是null,有待進一步解決

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 太仆寺旗| 思茅市| 夹江县| 阳曲县| 兴城市| 山东省| 环江| 三穗县| 庆元县| 荔浦县| 连城县| 剑阁县| 新泰市| 永顺县| 日喀则市| 保靖县| 德钦县| 荥经县| 墨脱县| 卓尼县| 特克斯县| 咸丰县| 安岳县| 佛冈县| 高州市| 达州市| 宁陕县| 泽库县| 马公市| 伊金霍洛旗| 张家界市| 和田市| 施秉县| 克什克腾旗| 泗洪县| 西峡县| 丹棱县| 江阴市| 南皮县| 牡丹江市| 城口县|