2016-03-22 44 views
0

我正在開發一款應用程序,其中有很多產品存儲在sqlite數據庫中。在回收視圖水平滾動屏幕上保持一個且只有一個子視圖?

我製作了水平滾動的Recycler視圖和Cardview。但是它自己的卷軸太平滑,孩子不會停在中心位置。

只有一個孩子應該是可見的(就像在標籤viewpager中)。

我應該使用viewpager來做到這一點,但必須創造如此多的片段。

+0

爲此,最好使用視圖尋呼機。爲此你不需要創建如此多的片段。一個片段將用於表示您的數據。但它會刷新它的視圖,當你將更改viewpager頁面 –

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

您可以使用簡單PagerAdapter爲perpose。像RecyclerViewAdapter一樣膨脹你的視圖。以上是我在代碼中使用的示例示例。 無需使用片段。

+0

謝謝,工程完全按照想要的小調整 – ebro52

+0

歡迎您。如果它適合您,然後請將其標記爲回答面對類似問題的其他人,他們也會得到幫助。 –

0

它僅用於兼容Android棒棒糖。運行Android Lollipop的兩個新的小工具,讓您的生活更輕鬆,RecyclerView和CardView.you必須創建簡單的標籤瀏覽器

+0

雖然你沒有拒絕對問題的評論,但它不是一個好的表現方式。更好的等待,直到你有良好的聲譽,以評論 – Nehal

相關問題