2016-03-22 9 views
0

Ich entwickle eine App, in der es viele Produkte gibt, die in sqlite Database gespeichert sind.Behalten Sie nur eine einzige untergeordnete Ansicht auf dem Bildschirm bei Recycle-view Horizontal scroll?

Ich habe eine Recycler-Ansicht und Cardview, die horizontal scrollen. Aber die Rolle selbst ist zu glatt und das Kind hört nicht in der Mitte auf.

Nur ein Kind sollte sichtbar sein (wie im Tab viewpager).

Sollte ich Viewpager verwenden, um dies zu tun, aber so viele Fragmente erstellen müssen.

+0

ist es besser, View Pager für diesen Zweck zu verwenden. und dafür müssen Sie nicht so viele Fragmente erstellen. Ein einzelnes Fragment wird zur Darstellung Ihrer Daten verwendet. aber es aktualisiert seine Ansicht, wenn Sie die Seite in Viewpager ändern –

+0

Verwenden Sie [diese Bibliothek, überprüfen Sie die Antwort] (http://stackoverflow.com/a/35519128/2826147) –

+0

Vielen Dank für die schnelle Antwort, können Sie auf einige Beispiel umleiten von der Sorte? – ebro52

Antwort

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); 
    } 
} 

erstellen können Sie einfache PagerAdapter für diese perpose verwenden. Erweitern Sie Ihre Ansichten wie RecyclerViewAdapter. Oben ist ein Beispiel, das ich in meinem Code verwende. Keine Notwendigkeit, Fragment auch zu verwenden.

+0

Danke, funktioniert genau wie gewünscht mit kleinen Anpassungen – ebro52

+0

Sie sind willkommen.Wenn es für Sie arbeitete, dann markiert es als Antwort für andere, die ähnliches Problem haben, werden sie auch von geholfen bekommen. –

0

ist es für nur kompatiblen Android Lollipop. Android Lollipop zwei neue Widgets Ihr Leben leichter zu machen, RecyclerView und CardView.you haben einfache Registerkarte Betrachter

+0

Auch wenn Sie keine Kommentare zu einer Frage erhalten haben, ist dies kein guter Weg, sie darzustellen. Besser warten, bis Sie den richtigen Ruf haben, um zu kommentieren – Nehal