2017-06-27 4 views
1

Voici ce que j'ai maintenant.Comment faire des en-têtes de lignes toujours visibles dans RowsFragment

enter image description here

simplement mon RowsFragment est ressembler à ceci,

public static class SampleFragmentB extends RowsFragment { 
     private final ArrayObjectAdapter mRowsAdapter; 

     public SampleFragmentB() { 
      mRowsAdapter = new ArrayObjectAdapter(new ShadowRowPresenterSelector()); 

      setAdapter(mRowsAdapter); 
      setOnItemViewClickedListener(new OnItemViewClickedListener() { 
       @Override 
       public void onItemClicked(
         Presenter.ViewHolder itemViewHolder, 
         Object item, 
         RowPresenter.ViewHolder rowViewHolder, 
         Row row) { 
        Toast.makeText(getActivity(), "Implement click handler", Toast.LENGTH_SHORT) 
          .show(); 
       } 
      }); 
     } 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      createRows(); 
      getMainFragmentAdapter().getFragmentHost().notifyDataReady(getMainFragmentAdapter()); 
     } 

     private void createRows() { 
       String json = Utils.inputStreamToString(getResources().openRawResource(
         R.raw.page_row_example)); 
       CardRow[] rows = new Gson().fromJson(json, CardRow[].class); 
       for (CardRow row : rows) { 
        mRowsAdapter.add(createCardRow(row)); 
       } 
     } 

     private Row createCardRow(CardRow cardRow) { 
      PresenterSelector presenterSelector = new CardPresenterSelector(getActivity()); 
      ArrayObjectAdapter adapter = new ArrayObjectAdapter(presenterSelector); 
      for (Card card : cardRow.getCards()) { 
       adapter.add(card); 
      } 

      HeaderItem headerItem = new HeaderItem(cardRow.getTitle()); 
      return new CardListRow(headerItem, adapter, cardRow); 
     } 
    } 

C'est ce que je veux faire exactement,

enter image description here

Je veux faire toujours visible en-tête de chaque ligne sans sélectionner ou se concentrer dans RowsFragment. J'utilise leanback v24 pour ajouter plusieurs lignes dans chaque élément d'en-tête.

Répondre

1

Vous pouvez consulter la bibliothèque Sofa pour Android TV qui étend les capacités Leanback library en offrant un ensemble de fonctionnalités plus puissantes. Dans BrowseSupportFragment, mRowsFragment.setExpand devrait être true. Référence additionnelle: how to always show headers in RowsFragment

+0

merci pour votre aide, mais je ne suis pas autorisé Canapé dans ce projet. S'il n'y a pas d'autres solutions, je pourrais avoir à l'utiliser .. Merci d'avoir répondu. –