2014-02-13 19 views
0

如何實現製表符,使用每個製表符的活動。我找到了this tutorial,但它使用Fragments實現。 Here是一個顯示我想要做什麼的視頻。如何在活動中實現QuickReturnList?

這裏是我一直在努力做:

DefaultActivity.java

@Override 
protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     LayoutInflater inflater = (LayoutInflater) DefaultActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     view = inflater.inflate(R.layout.fragment, null); 
     mHeader = inflater.inflate(R.layout.header, null); 
     mQuickReturnView = (TextView) view.findViewById(R.id.sticky); 
     mPlaceHolder = mHeader.findViewById(R.id.placeholder); 



     mListView = (QuickReturnListView) getListView(); //showing class cast exception here 

     mQuickReturnView.setText("Default"); 
     mListView.addHeaderView(mHeader); 

     String[] array = new String[] { "Android", "Android", "Android", 
       "Android", "Android", "Android", "Android", "Android", 
       "Android", "Android", "Android", "Android", "Android", 
       "Android", "Android", "Android" }; 

     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_1,array); 


     mListView.getViewTreeObserver().addOnGlobalLayoutListener(
       new ViewTreeObserver.OnGlobalLayoutListener() { 
        @Override 
        public void onGlobalLayout() { 
         mQuickReturnHeight = mQuickReturnView.getHeight(); 
         mListView.computeScrollY(); 
         mCachedVerticalScrollRange = mListView.getListHeight(); 
        } 
       }); 

     mListView.setOnScrollListener(new OnScrollListener() { 
      @SuppressLint("NewApi") 
      @Override 
      public void onScroll(AbsListView view, int firstVisibleItem, 
        int visibleItemCount, int totalItemCount) { 

       mScrollY = 0; 
       int translationY = 0; 

       if (mListView.scrollYIsComputed()) { 
        mScrollY = mListView.getComputedScrollY(); 
       } 

       int rawY = mPlaceHolder.getTop() 
         - Math.min(
           mCachedVerticalScrollRange 
             - mListView.getHeight(), mScrollY); 

       switch (mState) { 
       case STATE_OFFSCREEN: 
        if (rawY <= mMinRawY) { 
         mMinRawY = rawY; 
        } else { 
         mState = STATE_RETURNING; 
        } 
        translationY = rawY; 
        break; 

       case STATE_ONSCREEN: 
        if (rawY < -mQuickReturnHeight) { 
         mState = STATE_OFFSCREEN; 
         mMinRawY = rawY; 
        } 
        translationY = rawY; 
        break; 

       case STATE_RETURNING: 
        translationY = (rawY - mMinRawY) - mQuickReturnHeight; 
        if (translationY > 0) { 
         translationY = 0; 
         mMinRawY = rawY - mQuickReturnHeight; 
        } 

        if (rawY > 0) { 
         mState = STATE_ONSCREEN; 
         translationY = rawY; 
        } 

        if (translationY < -mQuickReturnHeight) { 
         mState = STATE_OFFSCREEN; 
         mMinRawY = rawY; 
        } 
        break; 
       } 

       /** this can be used if the build is below honeycomb **/ 
       if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.HONEYCOMB) { 
        anim = new TranslateAnimation(0, 0, translationY, 
          translationY); 
        anim.setFillAfter(true); 
        anim.setDuration(0); 
        mQuickReturnView.startAnimation(anim); 
       } else { 
        mQuickReturnView.setTranslationY(translationY); 
       } 

      } 

      @Override 
      public void onScrollStateChanged(AbsListView view, int scrollState) { 
      } 
     }); 
     rlMain = (RelativeLayout)findViewById(R.id.main); 
     rlMain.addView(view); 
     setContentView(R.layout.activity_main); 

    } 

現在顯示mListView = (QuickReturnListView) getListView();

02-13 21:23:03.389: E/AndroidRuntime(26896): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.quickreturnlistwithactivity/com.example.quickreturnlistwithactivity.QuickReturnActivity}: java.lang.ClassCastException: android.widget.ListView cannot be cast to com.example.quickreturnlistwithactivity.QuickReturnListView 
02-13 21:23:03.389: E/AndroidRuntime(26896): Caused by: java.lang.ClassCastException: android.widget.ListView cannot be cast to com.example.quickreturnlistwithactivity.QuickReturnListView 
02-13 21:23:03.389: E/AndroidRuntime(26896): at com.example.quickreturnlistwithactivity.QuickReturnActivity.onCreate(QuickReturnActivity.java:67) 
+0

你有什麼問題? –

+0

我的主要問題是在嘗試使用活動在視頻中給出完全相同的listview。在示例代碼中使用片段。 – Kunu

+0

@MD我知道我不太清楚,但是如果你通過這個例子,你會明白我的問題。 – Kunu

回答

0

試想想,每個標籤作爲單獨的應用程序錯誤,有相同的看法。唯一的區別是女巫選項卡被選中。

你唯一的缺點是性能,因爲活動比片段更重。 另外,如果您想在活動之間共享數據,則比使用碎片更難。

另外你可能會發現this教程有趣。它展示了活動轉換的一個小例子。

+0

如果我只想要一個活動,比如說,我們可以說例子中的'DefaultFragment',那麼你可以給我建議嗎?那麼我怎麼把它轉換成Activity。 – Kunu

+0

@Kunu你在你找到的教程中獲得了完整的源代碼。我怎麼可能比你更多地幫助你? –

0

你確定你已經標記的樣子:

<your_package_path.QuickReturnListView 
相關問題