campaign recycylerview transformed to viewpager

This commit is contained in:
2019-12-28 17:59:31 +03:00
parent 140787d1d9
commit 57617717fa
11 changed files with 188 additions and 197 deletions

Binary file not shown.

Binary file not shown.

View File

@@ -93,6 +93,7 @@ dependencies {
implementation 'q.rorbin:badgeview:1.1.0'
implementation 'com.braintreepayments.api:braintree:2.22.0'
implementation 'org.jsoup:jsoup:1.11.1'
implementation 'me.relex:circleindicator:1.3.2'
implementation('com.braintreepayments.api:drop-in:3.7.1') {
exclude group: 'com.braintreepayments.api', module: 'braintree'
}

View File

@@ -5,10 +5,8 @@ import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.afollestad.materialdialogs.MaterialDialog;
@@ -24,7 +22,7 @@ import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import ch.pizzaleu.android.R;
import ch.pizzaleu.android.adapter.recycler.CampaignBannerRecyclerAdapter;
import ch.pizzaleu.android.adapter.pager.CampaignBannerPagerAdapter;
import ch.pizzaleu.android.api.ApiConstants;
import ch.pizzaleu.android.api.ApiEndPoints;
import ch.pizzaleu.android.api.ApiErrorUtils;
@@ -41,21 +39,23 @@ import ch.pizzaleu.android.model.CampaignBannerModel;
import ch.pizzaleu.android.model.CategoryModel;
import ch.pizzaleu.android.model.StoreModel;
import ch.pizzaleu.android.model.cart.CartInfoModel;
import me.relex.circleindicator.CircleIndicator;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
public class SplashActivity extends BaseActivity {
@BindView(R.id.campaignBannerRecyclerView) RecyclerView campaignBannerRecyclerView;
@BindView(R.id.postCodeTextView) TextView postCodeTextView;
@BindView(R.id.campaignsViewPager) ViewPager campaignsViewPager;
@BindView(R.id.viewPagerIndicator) CircleIndicator viewPagerIndicator;
@BindString(R.string.alert_invalid_post_code) String choosePostCodeAlert;
private ArrayList<StoreModel> storeList = new ArrayList<>();
private ArrayList<CampaignBannerModel> campaignBannerList = new ArrayList<>();
private StoreModel selectedStoreModel;
private CampaignBannerRecyclerAdapter campaignBannerRecyclerAdapter;
private CampaignBannerPagerAdapter campaignBannerPagerAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -63,7 +63,6 @@ public class SplashActivity extends BaseActivity {
setContentView(R.layout.activity_splash);
ButterKnife.bind(this);
//DisplayHelper.changeStatusColor();
initCampaignBannerRecyclerView();
if(NetworkHelper.isNetworkAvailable()){
registerNotificationTag();
getStoreList();
@@ -73,11 +72,11 @@ public class SplashActivity extends BaseActivity {
}
}
private void initCampaignBannerRecyclerView(){
campaignBannerRecyclerAdapter = new CampaignBannerRecyclerAdapter(campaignBannerList);
campaignBannerRecyclerView.setAdapter(campaignBannerRecyclerAdapter);
LinearLayoutManager layoutManager = new LinearLayoutManager(BaseActivity.currentActivity);
campaignBannerRecyclerView.setLayoutManager(layoutManager);
private void initCampaignViewPager(){
campaignBannerPagerAdapter = new CampaignBannerPagerAdapter(getSupportFragmentManager(), campaignBannerList);
campaignsViewPager.setAdapter(campaignBannerPagerAdapter);
viewPagerIndicator.setViewPager(campaignsViewPager);
viewPagerIndicator.setVisibility(View.VISIBLE);
}
@OnClick({R.id.choosePostCodeLayout, R.id.choosePostCodeButton})
@@ -144,7 +143,7 @@ public class SplashActivity extends BaseActivity {
campaignBannerList.clear();
campaignBannerList.addAll(response.body().getData());
sortCampaignBannerList();
campaignBannerRecyclerAdapter.notifyDataSetChanged();
initCampaignViewPager();
}
else {
ApiErrorUtils.parseError(response);

View File

@@ -0,0 +1,31 @@
package ch.pizzaleu.android.adapter.pager;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import java.util.ArrayList;
import ch.pizzaleu.android.fragment.CampaignBannerFragment;
import ch.pizzaleu.android.model.CampaignBannerModel;
public class CampaignBannerPagerAdapter extends FragmentPagerAdapter {
private ArrayList<CampaignBannerModel> campaignBannerList = new ArrayList<>();
public CampaignBannerPagerAdapter(FragmentManager fm,
ArrayList<CampaignBannerModel> campaignBannerList) {
super(fm);
this.campaignBannerList = campaignBannerList;
}
@Override
public Fragment getItem(int position) {
return CampaignBannerFragment.newInstance(campaignBannerList.get(position));
}
@Override
public int getCount() {
return campaignBannerList.size();
}
}

View File

@@ -1,107 +0,0 @@
package ch.pizzaleu.android.adapter.recycler;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import java.util.ArrayList;
import butterknife.BindView;
import butterknife.ButterKnife;
import ch.pizzaleu.android.R;
import ch.pizzaleu.android.helper.ImageLoadHelper;
import ch.pizzaleu.android.model.CampaignBannerModel;
public class CampaignBannerRecyclerAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{
private final int HOLDER_CAMPAIGN_BANNER = 0;
private final int HOLDER_SPACE = 1;
private ArrayList<CampaignBannerModel> bannerList = new ArrayList<>();
public static class CampaignBannerHolder extends RecyclerView.ViewHolder {
@BindView(R.id.campaignBannerImageView)
ImageView campaignBannerImageView;
public CampaignBannerHolder(final View view) {
super(view);
ButterKnife.bind(this, view);
}
}
public static class SpaceViewHolder extends RecyclerView.ViewHolder{
public SpaceViewHolder(final View view) {
super(view);
}
}
@Override
public int getItemViewType(int position) {
if(position == bannerList.size())
return HOLDER_SPACE;
return HOLDER_CAMPAIGN_BANNER;
}
public CampaignBannerRecyclerAdapter(ArrayList<CampaignBannerModel> bannerList){
this.bannerList = bannerList;
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
RecyclerView.ViewHolder viewHolder;
View view;
LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext());
switch (viewType){
case HOLDER_SPACE:
view = inflater.inflate(R.layout.row_space, viewGroup, false);
viewHolder = new SpaceViewHolder(view);
break;
// HOLDER_CAMPAIGN_BANNER
default:
view = inflater.inflate(R.layout.row_campaign_banner, viewGroup, false);
viewHolder = new CampaignBannerHolder(view);
break;
}
return viewHolder;
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) {
switch (holder.getItemViewType()){
case HOLDER_CAMPAIGN_BANNER :
CampaignBannerHolder campaignBannerHolder = (CampaignBannerHolder) holder;
ImageLoadHelper.loadImage(campaignBannerHolder.campaignBannerImageView, bannerList.get(position).getImageUrl());
//ImageLoadHelper.loadImage(campaignBannerHolder.campaignBannerImageView, getSampleImageUrl(position));
break;
case HOLDER_SPACE :
SpaceViewHolder spaceViewHolder = (SpaceViewHolder) holder;
break;
}
}
@Override
public int getItemCount() {
return bannerList.size() + 1 ;
}
private String getSampleImageUrl(int position){
if(position % 2 == 0){
return "http://pizzaleu.ddns.net/pizza/images/angebot3.png";
}
else {
return "http://pizzaleu.ddns.net/pizza/images/Pizza_Leu-Pizzapass.png";
}
}
}

View File

@@ -0,0 +1,53 @@
package ch.pizzaleu.android.fragment;
import android.os.Bundle;
import android.support.v7.widget.AppCompatImageView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import butterknife.BindView;
import butterknife.ButterKnife;
import ch.pizzaleu.android.R;
import ch.pizzaleu.android.helper.ImageLoadHelper;
import ch.pizzaleu.android.model.CampaignBannerModel;
public class CampaignBannerFragment extends BaseFragment {
@BindView(R.id.campaignBannerImageView) AppCompatImageView campaignBannerImageView;
public static final String FRAGMENT_NAME = "campaignFragment";
private CampaignBannerModel campaignBannerModel;
public CampaignBannerFragment() {}
public static CampaignBannerFragment newInstance(CampaignBannerModel campaignBannerModel) {
Bundle args = new Bundle();
args.putSerializable("campaignBannerModel", campaignBannerModel);
CampaignBannerFragment fragment = new CampaignBannerFragment();
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_campaign_banner, container, false);
ButterKnife.bind(this, view);
getDataFromArguments();
initViews();
return view;
}
private void getDataFromArguments(){
campaignBannerModel = (CampaignBannerModel) getArguments().getSerializable("campaignBannerModel");
}
private void initViews(){
ImageLoadHelper.loadImage(campaignBannerImageView, campaignBannerModel.getImageUrl());
}
}

View File

@@ -3,7 +3,9 @@ package ch.pizzaleu.android.model;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class CampaignBannerModel {
import java.io.Serializable;
public class CampaignBannerModel implements Serializable {
@Expose
@SerializedName("title")

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
@@ -21,79 +21,84 @@
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:src="@drawable/pizzaleu_splash_logo"
android:layout_centerHorizontal="true"
android:adjustViewBounds="true"
android:layout_marginTop="8dp"
android:layout_marginStart="16dp"
android:layout_marginEnd="16dp"
android:scaleType="fitXY" />
android:scaleType="fitXY"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
<LinearLayout
android:id="@+id/splashButtonsLayout"
<RelativeLayout
android:id="@+id/choosePostCodeLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/pizzappSplashLogoImageView"
android:orientation="vertical"
android:layout_marginBottom="8dp"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp">
android:layout_height="48dp"
android:layout_marginTop="16dp"
android:layout_marginLeft="16dp"
android:layout_marginStart="16dp"
android:layout_marginRight="16dp"
android:layout_marginEnd="16dp"
android:background="@drawable/background_button_add_cart"
app:layout_constraintTop_toBottomOf="@id/pizzappSplashLogoImageView"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent">
<RelativeLayout
android:id="@+id/choosePostCodeLayout"
android:layout_width="match_parent"
android:layout_height="48dp"
android:layout_marginTop="16dp"
android:layout_marginLeft="8dp"
android:layout_marginStart="8dp"
android:layout_marginRight="8dp"
android:layout_marginEnd="8dp"
android:background="@drawable/background_button_add_cart">
<TextView
android:id="@+id/postCodeTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/choose_post_code"
android:layout_centerInParent="true"
android:textSize="12sp"
android:textColor="@color/main_black"/>
<ImageView
android:layout_width="12dp"
android:layout_height="12dp"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:src="@drawable/ic_down_black"
android:tint="@color/main_black"
android:layout_marginRight="8dp"
android:layout_marginEnd="8dp"
android:layout_centerVertical="true"/>
</RelativeLayout>
<Button
android:id="@+id/choosePostCodeButton"
android:background="@drawable/background_button_pizzapp_gray"
android:textColor="@color/yellow"
<TextView
android:id="@+id/postCodeTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/choose_post_code"
android:layout_centerInParent="true"
android:textSize="12sp"
android:textAllCaps="false"
android:layout_width="match_parent"
android:layout_height="48dp"
android:layout_marginTop="8dp"
android:layout_marginLeft="8dp"
android:layout_marginStart="8dp"
android:textColor="@color/main_black"/>
<ImageView
android:layout_width="12dp"
android:layout_height="12dp"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:src="@drawable/ic_down_black"
android:tint="@color/main_black"
android:layout_marginRight="8dp"
android:layout_marginEnd="8dp"
android:text="@string/choose_post_code_button" />
android:layout_centerVertical="true"/>
</LinearLayout>
</RelativeLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/campaignBannerRecyclerView"
<Button
android:id="@+id/choosePostCodeButton"
android:background="@drawable/background_button_pizzapp_gray"
android:textColor="@color/yellow"
android:textSize="12sp"
android:textAllCaps="false"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/splashButtonsLayout"
android:layout_alignParentBottom="true"
tools:listitem="@layout/row_campaign_banner"/>
android:layout_height="48dp"
android:layout_marginTop="8dp"
android:layout_marginLeft="16dp"
android:layout_marginStart="16dp"
android:layout_marginRight="16dp"
android:layout_marginEnd="16dp"
android:text="@string/choose_post_code_button"
app:layout_constraintTop_toBottomOf="@+id/choosePostCodeLayout"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"/>
</RelativeLayout>
<android.support.v4.view.ViewPager
android:id="@+id/campaignsViewPager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_margin="16dp"
app:layout_constraintTop_toBottomOf="@+id/choosePostCodeButton"
app:layout_constraintDimensionRatio="H,16:9"/>
<me.relex.circleindicator.CircleIndicator
android:id="@+id/viewPagerIndicator"
android:layout_width="match_parent"
app:layout_constraintTop_toBottomOf="@+id/campaignsViewPager"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:layout_height="48dp"
android:visibility="gone"/>
</android.support.constraint.ConstraintLayout>

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.AppCompatImageView
android:id="@+id/campaignBannerImageView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:scaleType="fitXY"
android:adjustViewBounds="true"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintDimensionRatio="H,16:9"/>
</android.support.constraint.ConstraintLayout>

View File

@@ -1,13 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<ImageView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/campaignBannerImageView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:scaleType="fitXY"
android:paddingTop="16dp"
android:paddingStart="16dp"
android:paddingEnd="16dp"
tools:src="@drawable/pizzaleu_splash_logo"/>