2016-03-22 14 views
0

私はsqliteデータベースに格納されている多くの製品があるアプリケーションを開発しています。1つだけチャイルドビューを画面に表示リサイクルビュー水平スクロール?

私はRecyclerビューとCardviewを水平にスクロールしました。しかしスクロール自体はスムーズで、子供は中心に止まらない。

(タブビューページのように)1つの子のみが表示される必要があります。

これを行うにはビューページを使用する必要がありますが、多くのフラグメントを作成する必要があります。

+0

この目的のためにビューページャーを使用する方がよいです。これは非常に多くの断片を作成する必要はありません。 1つのフラグメントがデータを表すために使用されます。ビューページでページを変更するときにビューが更新されます –

+0

[このライブラリ、チェックの回答](http://stackoverflow.com/a/35519128/2826147) –

+0

すばやい応答ありがとう、いくつかの例にリダイレクトできますか並べ替えの? – ebro52

答えて

2
import android.app.Activity; 
import android.os.Build; 
import android.support.v4.content.ContextCompat; 
import android.support.v4.view.PagerAdapter; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.view.Window; 
import android.view.WindowManager; 
import android.widget.ImageView; 

import com.retail.R; 
import com.retail.beacons.beaconModel.OfferBeaconData; 
import com.retail.manager.UserProfileManager; 
import com.retail.ui.view.RobotoLightTextVew; 
import com.squareup.picasso.Picasso; 

import java.util.List; 

/** 
* Created by mahendra.chhimwal on 1/14/2016. 
*/ 
public class BeaconOffersPagerAdapter extends PagerAdapter { 

    private Activity mContext; 
    private List<OfferBeaconData.OfferItem> mOfferItems; 

    public BeaconOffersPagerAdapter(Activity context, List<OfferBeaconData.OfferItem> offerItems) { 
     this.mContext = context; 
     this.mOfferItems = offerItems; 
    } 

    @Override 
    public int getCount() { 
     return mOfferItems == null ? 0 : mOfferItems.size(); 
    } 

    @Override 
    public boolean isViewFromObject(View view, Object object) { 
     return view == object; 
    } 

    @Override 
    public Object instantiateItem(final ViewGroup container, final int position) { 
     View view; 
     LayoutInflater inflater = LayoutInflater.from(mContext); 
     view = inflater.inflate(R.layout.item_beac_off_pager_item, container, false); 
     ImageView offerItemImage = (ImageView) view.findViewById(R.id.iv_offer_image); 
     RobotoLightTextVew tvWelcomeMsg = (RobotoLightTextVew) view.findViewById(R.id.tv_welcome_msg); 
     RobotoLightTextVew upperTitle = (RobotoLightTextVew) view.findViewById(R.id.tv_upper_title); 
     RobotoLightTextVew bottomTitle = (RobotoLightTextVew) view.findViewById(R.id.tv_bottom_title); 
     RobotoLightTextVew discountText = (RobotoLightTextVew) view.findViewById(R.id.tv_offer_discount); 

     //Updating views 
     Picasso.with(mContext).load(mOfferItems.get(position).getOfferProduct().getImageUri()).into(offerItemImage); 
     upperTitle.setText(mOfferItems.get(position).getOfferTitle()); 
     String userName = UserProfileManager.getInstance().getName(); 
     if (userName != null && userName.length() > 0) { 
      int toIndex = userName.indexOf(" "); 
      if (toIndex != -1) { 
       userName = userName.substring(0, toIndex); 
      } 
      tvWelcomeMsg.setVisibility(View.VISIBLE); 
      tvWelcomeMsg.setText(mContext.getString(R.string.welcome_greeting, userName)); 
     } 
     bottomTitle.setText(mOfferItems.get(position).getOfferSecondTitle()); 
     discountText.setText("" + mOfferItems.get(position).getOfferProduct().getMaxDiscount() + "% off"); 

     return view; 
    } 

    @Override 
    public void destroyItem(ViewGroup container, int position, Object object) { 
     container.removeView((View) object); 
    } 
} 

シンプルなタブビューアを作成する必要があります。 RecyclerViewAdapterのようにビューを膨らませます。上記は私のコードで使用しているサンプルの例です。 フラグメントを使用する必要はありません。

+0

マイナーな調整で欲しいものと同じように、ちょっとした調整をしたいと思っています。 – ebro52

+0

あなたのために働いていれば、同様の問題に直面している他の人の回答としてマークしてください。 –

0

Android Lollipopにのみ対応しています。 Androidのロリポップあなたの人生を容易にするために2つの新しいウィジェットは、RecyclerViewとCardView.youは、あなたがそのperposeのためのシンプルなPagerAdapterを使用することができます

+0

あなたは質問のコメントを再入力する必要はありませんが、表現するのは良い方法ではありません。あなたがコメントするために適切な評判を得るまで待ってください – Nehal

関連する問題