2014-03-13 35 views
2

這是我的情況:Android:我如何在列表之外創建一個ListView標題?

enter image description here

我想名單看待「頭」和標籤部分作爲表頭,使「頭」和標籤不留固定在屏幕上,他們都與名單一起滾動。

我不能簡單地通過mListView.addHeaderView()將標題和標籤添加爲列表的headerView,因爲按下時標籤將換出「列表」內容區域。其他選項卡的內容區域將包含其他列表,並且標題和選項卡也應與新列表一起滾動。

我很感激任何幫助。

+0

http://i.imgur.com /gy8lV.gif – dcow

+0

@dcow基本上什麼都沒有,我想通過 – James

+0

來思考@詹姆斯是否設法實現了這一設計? – vfede

回答

0

您可以重寫getViewType方法以精確確定您有多少行的listview。

看一看here

0

把整個事情想象成ListView。您可以根據需要多次撥打addHeaderView(),這樣您就可以擁有兩個標題視圖(「標題」和「選項卡|選項卡|選項卡」)。

回覆:

通過mListView.addHeaderView(),我不能簡單地添加標題和標籤作爲headerView的名單,因爲在按壓時選項卡將換出「清單」內容區域。

是的,你可以。

更新對列表數據的引用並致電mAdapter.notifyDataSetChanged()

0

我和你有同樣的需求,我發現這個項目實際上實現了你需要的東西,再加上一些更加刺眼的技巧。

https://github.com/kmshack/Android-ParallaxHeaderViewPager

神奇的是綁定發生在片段列表中的活性所定義的報頭中的滾動。選項卡的選擇與列表中的滾動位置之間也有基本的約束,以便在滑動時調整列表。 此代碼基於github回購,但更簡單(因此不太健壯),閱讀它只是爲了瞭解會發生什麼,然後在回購中閱讀源代碼。

public class MyFragment extends Fragment implements OnScrollListener { 
    @Override 
    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { 
     ((MyParentActivity) getActivity()).onScrollFragment(view, mTabPosition); 
    } 

    public void adjustScroll(int scrollHeight) { 
    if (scrollHeight == 0 && fragmentListView.getFirstVisiblePosition() >= 1) { 
     return; 
    } 

    officesListView.setSelectionFromTop(1, scrollHeight); 
    } 
} 

然後在活動中,你只需要這兩種具體方法

public class MyParentActivity implements ViewPager.OnPageChangeListener{ 
    @Override 
    public void onPageSelected(int position) 
      myFragmentPagerAdapter.getFragmentAt(position) 
            .adjustScroll((int) (mHeader.getHeight() + ViewHelper.getTranslationY(mHeader)));  
    } 

    public void onScrollFragment(AbsListView view, int tabPosition) { 

     if (mViewPager.getCurrentItem() == tabPosition) { 
      int scrollY = getScrollY(view); 
      ViewHelper.setTranslationY(mHeader, Math.max(-scrollY, mMinHeaderTranslation)); 
     } 
    } 
} 

這個代碼是好的可達8 API由於NineOldAndroids'視圖助手

相關問題