2015-12-02 25 views
0

我想在標籤中顯示餐廳的菜單類別。但選項卡的數量取決於特定餐館中有多少類別,並且該類別的菜單將顯示在ListView的相應頁面中。這在android中可能嗎?請讓我知道如何實現它。根據服務器響應要求,我們可以在選項卡布局中添加選項卡嗎?

+1

你要問,如果動態標籤是可以或不可以?你會在標籤已經加載後改變標籤嗎? – himanshu1496

+0

檢查http://stackoverflow.com/questions/13664155/dynamically-add-and-remove-view-to-viewpager –

+0

是的我在問動態標籤。 –

回答

1

是的,你可以。在獲取數據(可能爲JSON)並將其保存到SQLite數據庫後,您可以加載該數據並創建動態選項卡。比方說,你將只需要一個片段來表示特定類別的類別片段。您可以概括該片段以支持和加載數據,具體取決於您傳遞的類別ID或其他參數。

你可以說HomeTabsFragment表示家庭片段選項卡。在該片段中,當您獲取類別時,您可以定義您的TabsAdapter,然後將該適配器分配給您的viewPager mViewPager.setAdapter(mAdapter)。對於每一個類別您創建一個標籤與標題和片段,在適配器僅適用於標籤獲取數據,如:

public class TabsPagerAdapter extends FragmentStatePagerAdapter { 

    private ArrayList<Category> categories; 

    public TabsPagerAdapter(FragmentManager fm, Context context,ArrayList<Category> categories) { 
     super(fm); 
     this.categories=categories; 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return CategoryFragment.newInstance(categories.get(position),position); 
    } 

    @Override 
    public int getCount() { 
     return categories.size(); 
    } 

    @Override 
    public CharSequence getPageTitle(int position){ 
     return categories.get(position).getTitle(); 
    } 

    @Override 
    public void unregisterDataSetObserver(DataSetObserver observer) { 
     if (observer != null) { 
      super.unregisterDataSetObserver(observer); 
     } 
    } 
} 

而且CategoryFragment:

public class CategoryFragment extends Fragment { 

     public CategoryFragment(){ 
     // required empty constructor 
    } 
    public static CategoryFragment newInstance(Category category,int position){ 
     CategoryFragment fragment=new CategoryFragment(); 

     Bundle args=new Bundle(); 
     args.putParcelable("category", category); 
     args.putInt("position", position); 
     fragment.setArguments(args); 
     return fragment; 
    } 
    public Object getCategory(){ 
     return getArguments().getParcelable("category"); 
    } 

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

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.fragment_list, container, false); 

     //Fetch data for categoryID 
     return view; 
    }  
} 
相關問題