1. 程式人生 > >Anddroid ExpandableListView 實現父Item懸浮在頂部不動,子Item滑動顯示,直到下一個父Item滑動到頂部的效果

Anddroid ExpandableListView 實現父Item懸浮在頂部不動,子Item滑動顯示,直到下一個父Item滑動到頂部的效果

          Anddroid ExpandableListView 實現父Item懸浮在頂部不動,子Item滑動顯示,直到下一個父Item滑動到頂部效果;

首先可以定義一個 FrameLayout 覆蓋在 ExpandableListView 第一個父 Item 的位置(注意 FrameLayout 和父 Item 顯示的樣式要一樣)

再可以通過 ExpandableListView 的  setOnScrollListener 監聽函式實現

// 根據 ExpandListView 的滑動事件來從 mParentMap 集合當中獲取對應的時間 time 資料
mLvPoliticaRecordExpandableListView
.setOnScrollListener(new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { // KdsUtils.showNotifyMessage(" scrollState = " + scrollState); } @Override public void onScroll(AbsListView view, int firstVisibleItem, int
visibleItemCount, int totalItemCount) { if (null != mAdapter && null != mAdapter.mParentMap) { String value = mAdapter.mParentMap.get(firstVisibleItem + ""); // KdsUtils.showNotifyMessage("firstVisibeItem = " + firstVisibleItem + " ; visibleItemCount = " + visibleItemCount
// + " ; totalItemCount = " + totalItemCount + "; value = " + value); mTvParentTimeValue.setText(value); } } });
具體思路是:在ExpandableList 適配 Adapter 的時候,將父 Item 物件存放到一個集合當中;然後可以通過監聽函式引數 firstVisibleItem 定位,從物件集合當中獲取到父 Item 物件,然後就可以根據父 Item 物件對懸浮在頂部的 FrameLayout 樣式進行修改了