4

で複数のRecyclerViewsを追加します。私はプログラム的にまったくを追加しようとすると、一つでも返さRecyclerViewsがnullでない場合であっても、フラグメントビューに表示されていない、しかし、私は、XMLレイアウトを使用して1 RecyclerViewを含めるために管理している(下記参照)、それが正常に動作します。私のデータソースが駆動型のWeb APIであるため、数は必要に応じて、私は、XMLレイアウトでRecyclerViewsの具体的な数を追加することはできませんので、それはプログラム的に行う必要があり、随時変更されます。私はいくつかの異なる方法を試しましたが、すべての結果は同じです(例:RecyclerViewは1つではありません)。また、私はすでに行っていると、彼らは完璧に動作しますが、消化やすくするために、以下のコードから削除されている、ヘッダ、各RecyclerView上記TextViewsを追加する必要があります。プロジェクトを終了するために必要なのは、複数のRecyclerViewを追加することだけです。私は誰かが助けることを願っていますアンドロイド:プログラムにより、私はプログラム的フラグメントに複数のRecyclerViewsを追加する必要がありフラグメント

フラグメント:

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) 
    { 
    svv = new ScrollView(getActivity()); 
    svv.setLayoutParams(new ScrollView.LayoutParams(ScrollView.LayoutParams.MATCH_PARENT, ScrollView.LayoutParams.WRAP_CONTENT)); 
    linLayout = new LinearLayout(getActivity()); 
    linLayout.setOrientation(LinearLayout.VERTICAL); 
    linLayoutParam = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT); 

    View rootView = inflater.inflate(R.layout.fragment_root, container, false); 
    HorizontalScrollView svh; 
    RecyclerView itemsListing; 

    int top = 100; 
    for(int i = 0; i < itemCount; i++) { 
    String strSubURL = myListItem.myListUrls.get(i).toString(); 
    sharedData.setCurrMyURL(String.valueOf(strSubURL)); 

    // Below is where the problems start 

    // This works fine but only provides one recyclerview 
    //itemsListing = (RecyclerView) rootView.findViewById(R.id.items_listing); 

    // This does not work at all, showing zero recyclerviews even though the views are not null and are therefore actually created 
    itemsListing = new RecyclerView(inflater.getContext()); 

    itemsListing.setPadding(0, top, 0, 0); 
    mLayoutManager = new LinearLayoutManager(itemsListing.getContext(), LinearLayoutManager.HORIZONTAL, false); 
    itemsListing.setLayoutManager(mLayoutManager); 
    mAdapter = new ItemsListingAdapter(mItems, this); 
    itemsListing.setAdapter(mAdapter); 
    svh = new HorizontalScrollView(getActivity()); 
    svh.setPadding(0, top, 0, 0); 
    top=top+400; 
    } 
    svv.addView(linLayout); 
    RelativeLayout mainLayout = (RelativeLayout) rootView.findViewById(R.id.item_layout); 
    mainLayout.addView(svv); 
    return rootView; 
    } 

XMLレイアウト:

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/item_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:background="#000000" 
    tools:context="com.myco.myapp.items.listing.ItemsListingListingFragment"> 
    <android.support.v7.widget.RecyclerView 
    android:id="@+id/items_listing" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"/> 
    </RelativeLayout> 
+0

私はなぜあなたを理解していませんそれをする必要があります:ここでは解決策があり、有限のrecyclerviewsを実装し、各recyclerview行には別のrecyclerviewが含まれています。私は全くそれを理解していないが、だから今は、あなたが、 – suku

+0

こんにちは@sukuをしたいあなたの応答をありがとうできるだけ多くのrecyclerviewの項目を表示することができます!コレクションを分類するWeb APIがあり、各コレクションにヘッダーがあります。これらのコレクションは動的であり、それらのコレクション、アイテム、およびヘッダーは定期的に変更されます。 iOSでは、プログラムで作成されたヘッダーラベル付きのコレクションビューを使用しています。これは完全に機能します。 Androidでは、コレクションが変更されずに正常に動作する静的なXMLリサイクラビューも作成しました。だから、リサイクラ・ビューをプログラムで作成したリサイクラ・ビューを1つのxmlに入れてリサイクル・ビューを宣言できると言っていますか? – partynose

+0

あなたは何をしようとしているのか理解しています。私の答えをチェックしてください – suku

答えて

5

のチュートリアルです。ライブラリSectionedRecyclerViewAdapterで あなたはグループあなたのセクション内の項目と各セクションにヘッダを追加することができます。

class MySection extends StatelessSection { 

    String title; 
    List<String> list; 

    public MySection(String title, List<String> list) { 
     // call constructor with layout resources for this Section header, footer and items 
     super(R.layout.section_header, R.layout.section_item); 

     this.title = title; 
     this.list = list; 
    } 

    @Override 
    public int getContentItemsTotal() { 
     return list.size(); // number of items of this section 
    } 

    @Override 
    public RecyclerView.ViewHolder getItemViewHolder(View view) { 
     // return a custom instance of ViewHolder for the items of this section 
     return new MyItemViewHolder(view); 
    } 

    @Override 
    public void onBindItemViewHolder(RecyclerView.ViewHolder holder, int position) { 
     MyItemViewHolder itemHolder = (MyItemViewHolder) holder; 

     // bind your view here 
     itemHolder.tvItem.setText(list.get(position)); 
    } 

    @Override 
    public RecyclerView.ViewHolder getHeaderViewHolder(View view) { 
     return new SimpleHeaderViewHolder(view); 
    } 

    @Override 
    public void onBindHeaderViewHolder(RecyclerView.ViewHolder holder) { 
     MyHeaderViewHolder headerHolder = (MyHeaderViewHolder) holder; 

     // bind your header view here 
     headerHolder.tvItem.setText(title); 
    } 
} 

は、その後、あなたのセクションとRecyclerView設定:

// Create an instance of SectionedRecyclerViewAdapter 
SectionedRecyclerViewAdapter sectionAdapter = new SectionedRecyclerViewAdapter(); 

// Create your sections with the list of data you got from your API 
MySection data1Section = new MySection("Data 1", data1List); 
MySection data2Section = new MySection("Data 2", data2List); 

// Add your Sections to the adapter 
sectionAdapter.addSection(data1Section); 
sectionAdapter.addSection(data2Section); 

// Set up your RecyclerView with the SectionedRecyclerViewAdapter 
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerview); 
recyclerView.setLayoutManager(new LinearLayoutManager(getContext())); 
recyclerView.setAdapter(sectionAdapter); 
+0

ありがとう@グスタボ...これは私が探していたもののように聞こえる。私はそれに旋風を与える...ありがとう、ありがとう.... :) – partynose

+0

同じ行に各セクションの2つのアイテムを表示し、より多くのアイテムの左右にスクロールする方法は? –

2

あなたは複数のコレクションを持っているとし、各コレクションは、あなたが表示したい項目のリストを持っていたよう。これは簡単にexpandable listviewを使って行うことができます。クリックすると、ヘッダーのリストが表示され、ヘッダーの下にある項目のリストが表示されます。 Hereは、あなたが1でそれを達成することができ、複数のRecyclerViewsを必要としない、その実装

+0

ありがとう@スキュ。私はこれを検討しますが、私は何かが「拡張可能」であることを望んでいませんが、最初から拡張してスクロール表示に設定する必要があります。これは、最初から目に見えるコンテンツの大部分を持つメディアプレーヤーのためであり、動的ではなく静的な宣言で他のリサイクルビューを一致させる必要があります。私はグスタボが私に必要なものを私に与えてくれたと思うが、あなたの助けはそれほど高くはない。私はあなたの答えも受け入れます。もう一度ありがとう... :) – partynose

関連する問題