0

フラグメントの一番下に水平リサイクルビューを追加します。私はチュートリアルに従って、horizo​​ntal recyclerviewとcardviewを正常に実装しましたが、可能なすべての回答を試した後、水平スクロールは機能しません。ここで水平リサイクルビュー内のフラグメントがスクロールしない

は私のコードです: - XML: -

<RelativeLayout tools:context="com.AlfaCab.Menuactivtiy" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:layout_marginTop="56dp" 
    android:id="@+id/Mainlayout" 
    android:layout_height="match_parent" 
    android:layout_width="match_parent" 
    android:background="@color/BgColor" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:layout_alignParentBottom="true" 
     android:background="@drawable/offer_white_box"> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Offers" 
     android:gravity="center" 
     android:textSize="18sp" 
     android:textColor="@color/BlackTextColor" 
     android:textStyle="bold" 
     android:layout_marginLeft="10dp" 
     android:layout_marginRight="10dp" 
     android:layout_marginTop="10dp" 
     android:layout_marginBottom="5dp" /> 

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/recyclerView_offer" 
     android:orientation="horizontal" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     app:layoutManager="android.support.v7.widget.LinearLayoutManager" 
     android:scrollbars="none"/> 
     <!-- android:orientation="horizontal" 
     android:scrollbars="horizontal" 
     app:layoutManager="android.support.v7.widget.LinearLayoutManager" 
     /> --> 

    </LinearLayout> 
</RelativeLayout> 

ここrecyclerviewのための私のoffer_cardview.xml /カスタムレイアウトである: -

<?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:orientation="vertical" android:layout_width="wrap_content" 
     android:layout_height="wrap_content"> 

     <android.support.v7.widget.CardView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_margin="5dp"> 

       <!-- &lt;!&ndash;Offer Start&ndash;&gt; 
       <LinearLayout 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:orientation="vertical" 
        android:background="@drawable/offer_white_box"> 
    --> 

        <LinearLayout 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:orientation="horizontal"> 

         <!--Offer Coupon--> 
         <LinearLayout 
          android:layout_width="140dp" 
          android:layout_height="wrap_content" 
          android:orientation="vertical" 
          android:background="@drawable/round_box" 
          > 
          <LinearLayout 
           android:id="@+id/ll_offer_bg" 
           android:layout_width="match_parent" 
           android:layout_height="60dp" 
           android:orientation="horizontal" 
           android:background="@drawable/offer_red_box" 
           android:layout_marginBottom="3dp"> 
           <TextView 
            android:id="@+id/tv_offer_title" 
            android:layout_width="match_parent" 
            android:layout_height="wrap_content" 
            android:text="Get 30% Cashback" 
            android:textSize="12sp" 
            android:textColor="@color/WhiteTextColor" 
            android:textStyle="bold" 
            android:layout_gravity="center_vertical" 
            android:gravity="center"/> 
          </LinearLayout> 
          <TextView 
           android:id="@+id/tv_offer_disc" 
           android:layout_width="match_parent" 
           android:layout_height="80dp" 
           android:text="upto Rs. 300 cashback on Outstation" 
           android:textSize="10sp" 
           android:textColor="@color/BlackTextColor" 
           android:layout_marginBottom="5dp" 
           android:layout_marginLeft="5dp" 
           android:layout_marginRight="5dp"/> 
         </LinearLayout> 
         <!--Offer Coupon Ends--> 
        </LinearLayout> 

       <!--</LinearLayout>--> 
       <!--Offer Ends--> 
    </android.support.v7.widget.CardView> 


    </LinearLayout> 

HomeFragment.java: -

//a list to store all the products 

List<Offer_Data> offerList; 

//the recyclerview 
RecyclerView recyclerView; 

String appOfferId,appOfferTitle,appOfferDes,status; 
onCreateで

: - 正常offerListにデータを追加した後

//getting the recyclerview from xml 
     recyclerView = (RecyclerView) rootView.findViewById(R.id.recyclerView_offer); 

: -

//creating recyclerview adapter 
      Offer_Adapter adapter = new Offer_Adapter(getActivity(), offerList); 
      //adapter.notifyDataSetChanged(); 
      recyclerView.setHasFixedSize(true); 
      recyclerView.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL, false)); 
      recyclerView.setAdapter(adapter); 
      adapter.notifyDataSetChanged();// Notify the adapter 

Offer_Adapter.java: -(Recyclervireアダプタ)

public class Offer_Adapter extends RecyclerView.Adapter<Offer_Adapter.ProductViewHolder> { 

    int[] myImageList; 
    //this context we will use to inflate the layout 
    private Context mCtx; 

    //we are storing all the products in a list 
    private List<Offer_Data> offerList; 

    //getting the context and product list with constructor 
    public Offer_Adapter(Context mCtx, List<Offer_Data> offerList) { 
     this.mCtx = mCtx; 
     this.offerList = offerList; 
     this.myImageList = new int[]{R.drawable.offer_red_box, R.drawable.offer_megento_box, R.drawable.offer_yellow_box}; 
    } 

    @Override 
    public ProductViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     //inflating and returning our view holder 
     LayoutInflater inflater = LayoutInflater.from(mCtx); 
     View view = inflater.inflate(R.layout.offer_cardview, null); 
     return new ProductViewHolder(view); 
    } 

    @Override 
    public void onBindViewHolder(ProductViewHolder holder, int position) { 
     //getting the product of the specified position 
     Offer_Data product = offerList.get(position); 

     //binding the data with the viewholder views 
     holder.tv_offer_title.setText(product.getOffer_title()); 
     holder.tv_offer_disc.setText(product.getOffer_disc()); 

     int random_box = getRandom(myImageList); 
     holder.ll_offer_bg.setBackgroundResource(random_box); 
    } 

    public static int getRandom(int[] array) { 
     int rnd = new Random().nextInt(array.length); 
     return array[rnd]; 
    } 

    @Override 
    public int getItemCount() { 
     return offerList.size(); 
    } 


    class ProductViewHolder extends RecyclerView.ViewHolder { 

     TextView tv_offer_title, tv_offer_disc; 
     LinearLayout ll_offer_bg; 


     public ProductViewHolder(View itemView) { 
      super(itemView); 

      tv_offer_title = (TextView) itemView.findViewById(R.id.tv_offer_title); 
      tv_offer_disc = (TextView) itemView.findViewById(R.id.tv_offer_disc); 
      ll_offer_bg = (LinearLayout)itemView.findViewById(R.id.ll_offer_bg); 
     } 
    } 
} 

それを水平にスクロールさせてください。

+0

シェアあなたは私の更新質問かかわらrecycelview項目 – Prem

+0

移動用のカスタムレイアウトを使用すべき、カスタムレイアウトXMLを追加しました。 @Prem –

答えて

0
LinearLayoutManager linearLayoutManager 
    = new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false); 

RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView); 
recyclerView.setLayoutManager(linearLayoutManager); 
+0

LinearLayoutManagerに3番目のパラメータをfalseとして渡すと、スクロールの方向が右から左に変更されます。これは私の問題を解決しません。 @ Pratik18 –

+0

3番目のパラメータをtrueにしてみます。 – Pratik18

+0

それはありません@ Pratik18 –

0

見つかり問題

変更このライン

recyclerView.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL, false)); 

recyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.HORIZONTAL, false)); 

の問題は、あなたがリサイクルビューマネージャに間違ったコンテキストを渡しているということである

getActivity()ないgetContext()

XMLでこの行を追加する必要はありません

app:layoutManager="android.support.v7.widget.LinearLayoutManager" 
+0

私のXMLコードを確認してください、私はすでにこれを追加しましたが、動作していません。 @quick learner –

+0

投稿全体XMLも@PriyaJagtap –

+0

完全なXMLコードで更新されます。 @quick learner –

関連する問題