0

私はRESTから来るN個のカテゴリを持っているとします。私はこれらのすべてのカテゴリのタブを追加したいと思います。たとえば見てみましょう私のRESTレスポンスに2つのカテゴリしかないと仮定すると、2つのタブしか作成されません。 5つのカテゴリ、5つのタブなどがある場合。 各カテゴリタブでは、選択したタブ(カテゴリ)のアイテムのリストを読み込みます。 現在、私は断片を使って静的データを実装しています。各フラグメントは、アイテムをロードするためのリストビューを使用します。しかし、私はそれが正しい方法ではないと思う。Xamarin.Androidのカテゴリに基づいてタブを追加します。

Here is an example

あなたは私が使うべきか、どのように私は私のカテゴリに基づいてタブを追加することができ、各カテゴリのための私のリストを読み込むものを私に提案してくださいことはできますか?私はXamarin.androidでTabLayoutを見つけられませんでした。

私のメインビュー:私のフラグメントビューの

protected override void OnCreate(Bundle savedInstanceState) 
     { 
      base.OnCreate(savedInstanceState); 

      // Create your application here 
      SetContentView(Resource.Layout.MainView);    


      ActionBar.NavigationMode = ActionBarNavigationMode.Tabs; 

      AddTab(" Favorite", Resource.Drawable.FavoritesIcon, new FavoriteItemFragment()); 
      AddTab(" Ice", Resource.Drawable.IceCreamIcon, new IceCreamFragment()); 
      AddTab(" Shushi", Resource.Drawable.SushiIcon, new ShushiFragment()); 
      AddTab(" Burger", Resource.Drawable.VeggieLoversIcon, new BurgerFragment()); 
      AddTab(" Biriyani", Resource.Drawable.BiriyaniIcon, new BiriyaniFragment()); 
      AddTab(" Pasta", Resource.Drawable.PastaIcon, new PastaFragment()); 
      AddTab(" Pizza", Resource.Drawable.PizzaIcon, new PizzaFragment()); 
      AddTab(" Sandwich", Resource.Drawable.SandwichIcon, new SandwichFragment()); 
      AddTab(" Coffee", Resource.Drawable.CoffeeIcon, new CoffeeFragment()); 



      //no_of_categories = allCategories.Count; 

     } 

     private void AddTab(string tabText, int iconResourceId, Fragment view) 
     { 
      var tab = this.ActionBar.NewTab(); 
      tab.SetText(tabText); 
      tab.SetIcon(iconResourceId); 


      tab.TabSelected += delegate (object sender, ActionBar.TabEventArgs e) 
      { 
       var fragment = this.FragmentManager.FindFragmentById(Resource.Id.fragmentContainer); 

       if (fragment != null) 
       { 
        e.FragmentTransaction.Remove(fragment); 
       } 
       e.FragmentTransaction.Add(Resource.Id.fragmentContainer, view); 
      }; 

      tab.TabUnselected += delegate (object sender, ActionBar.TabEventArgs e) 
      { 
       e.FragmentTransaction.Remove(view); 
      }; 
      this.ActionBar.AddTab(tab); 
     } 

ワン:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:minWidth="25px" 
    android:background="#FCD972" 
    android:minHeight="25px"> 
    <ListView 
     android:minWidth="25px" 
     android:minHeight="25px" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:id="@+id/itemListView" /> 
</LinearLayout> 

そして私の破片クラス:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:minWidth="25px" 
    android:minHeight="25px"> 

    <FrameLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:id="@+id/fragmentContainer" /> 
</LinearLayout> 

ここでは私の主な活動である

public override void OnActivityCreated(Bundle savedInstanceState) 
     { 
      base.OnActivityCreated(savedInstanceState); 
      FindViews(); 
      HandleEvents(); 

      items = itemDataService.GetItemsForCategory(4); 

      listView.Adapter = new ItemListAdapter(this.Activity, items); 
     } 

     public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
     { 
      return inflater.Inflate(Resource.Layout.MyFragment, container, false); 
     } 

はあなたに

答えて

0

Can you please suggest me what should I use to or how can I add tab based on my category and load my list for each category? I haven’t found TabLayout in Xamarin.android.

をありがとう、私はあなたが使用した方法が間違っていると言うことはできませんが、Xamarin.AndroidでTabLayoutを使用したい場合は、Xamarin.Android.Support.v4のようないくつかのパッケージと一緒にXamarin.Android.Support.Designパッケージをインストールする必要があります。 Xamarin Android: Working with material design TabLayout and ViewPager:このチュートリアルを参照することができ、より多くの情報については

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <android.support.design.widget.TabLayout 
     android:id="@+id/sliding_tabs" 
     style="@style/TabLayoutThemes" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="?android:attr/colorPrimary" 
     app:tabGravity="fill" 
     app:tabMode="fixed" /> 
    <android.support.v4.view.ViewPager 
     android:id="@+id/viewpager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 
</LinearLayout> 

次に、あなたは、このように例えば、あなたのレイアウトを設計することができます。

+0

ありがとうございます。私はあなたのやり方を試しましたが、主な問題は、プロジェクトにXamarin.Android.Support.Designコンポーネントを追加できないことです。 パッケージ「Xamarin.Android.Support.Design 26.0.2」をインストールできませんでした。 'MonoAndroid、Version = v6.0'を対象とするプロジェクトにこのパッケージをインストールしようとしていますが、そのフレームワークと互換性のあるアセンブリ参照またはコンテンツファイルがパッケージに含まれていません。詳細については、パッケージ作成者にお問い合わせください。 TabLayoutの代わりにタブを移動する方法はありますか? – Russell

+0

@Russell、あなたのプロジェクトの目標バージョンは? –

+0

Androidバージョン(ターゲットフレームワーク)を使用してコンパイルAndroid 6.0(マシュマロ)最小Androidバージョン:Android 5.0(APIレベル21- Lollipop) – Russell

関連する問題