Guest User

Adapter

a guest
Jan 11th, 2016
536
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 27.25 KB | None | 0 0
  1. public class MasonryAdapter extends RecyclerView.Adapter<MasonryAdapter.MasonryView> implements  View.OnTouchListener{
  2.  
  3.  
  4.     private Context context;
  5.     private Fragment parent;
  6.  
  7.     private int TILE_MARGIN_BOTTOM=5;
  8.     private List<DashboardTile> tileDefinitions=new ArrayList<DashboardTile>();
  9.  
  10.  
  11.     public MasonryAdapter(Context context,DashboardStaggered parent) {
  12.         this.context = context;
  13.         this.parent = parent;
  14.         //Create tiles
  15.         tileDefinitions.add(new DashboardTile(R.drawable.ic_dec_news,"Slide Show","9E0026",0,true,DashboardTileTypes.TILE_TYPE_SLIDESHOW)); //0
  16.         tileDefinitions.add(new DashboardTile(R.drawable.ic_dec_news,"News","A21E23",800,false,DashboardTileTypes.TILE_TYPE_ONE_COLUMN__TILE)); //1
  17.         tileDefinitions.add(new DashboardTile(R.drawable.ic_dec_event,"Events","008EAA",400,false,DashboardTileTypes.TILE_TYPE_ONE_COLUMN__TILE)); //2
  18.         tileDefinitions.add(new DashboardTile(R.drawable.ic_dec_resources,"Resources","539E3E",400,false,DashboardTileTypes.TILE_TYPE_ONE_COLUMN__TILE)); //3
  19.         tileDefinitions.add(new DashboardTile(R.drawable.ic_dec_winaprize,"Win a Prize","F89B1C",400,false,DashboardTileTypes.TILE_TYPE_FULL_WIDTH_TILE)); //4
  20.         tileDefinitions.add(new DashboardTile(R.drawable.ic_dec_polling,"Polling","A8CF5A",400,false,DashboardTileTypes.TILE_TYPE_ONE_COLUMN__TILE)); //5
  21.         tileDefinitions.add(new DashboardTile(R.drawable.ic_dec_webinar,"Webinar","814199",800,false,DashboardTileTypes.TILE_TYPE_ONE_COLUMN__TILE)); //6
  22.         tileDefinitions.add(new DashboardTile(R.drawable.ic_dec_qa,"Q & A","13ADA0",400,false,DashboardTileTypes.TILE_TYPE_ONE_COLUMN__TILE)); //6
  23.         tileDefinitions.add(new DashboardTile(R.drawable.ic_dec_solutions,"Solutions","00507E",400,false,DashboardTileTypes.TILE_TYPE_FULL_WIDTH_TILE)); //7
  24.         tileDefinitions.add(new DashboardTile(R.drawable.ic_dec_contact,"Contact","0093B2",400,false,DashboardTileTypes.TILE_TYPE_ONE_COLUMN__TILE)); //8
  25.         tileDefinitions.add(new DashboardTile(R.drawable.ic_dec_profile,"Profile","555555",400,false,DashboardTileTypes.TILE_TYPE_ONE_COLUMN__TILE)); //9
  26.         //tileDefinitions.add(new DashboardTile(R.drawable.ic_globe_big,"Sponsor","000000",400,false,DashboardTileTypes.TILE_TYPE_SPONSOR)); //11 - removed this in xml, set view to gone!
  27.         tileDefinitions.add(new DashboardTile(R.drawable.ic_dec_news,"Footer","53921A",0,true,DashboardTileTypes.TILE_TYPE_FOOTER)); //12
  28.  
  29.  
  30.     }
  31.  
  32.     @Override
  33.     public MasonryView onCreateViewHolder(ViewGroup parent, int viewType) {
  34.         MasonryView masonryView=null;
  35.         Log.d("MASONRY","onCreateViewHolder "+viewType+" rendering");
  36.         switch (viewType){
  37.             case DashboardTileTypes.TILE_TYPE_ONE_COLUMN__TILE: { //Normal tile
  38.                 Log.d("MASONRY", "onCreateViewHolder " + viewType + " TILE_TYPE_ONE_COLUMN__TILE");
  39.                 View layoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.dashboard_masonry_tile, parent, false);
  40.                 masonryView = new MasonryView(layoutView, viewType);
  41.                 layoutView.setOnTouchListener(this);
  42.                 break;
  43.             }
  44.             case DashboardTileTypes.TILE_TYPE_FOOTER:{ //Footer
  45.                 Log.d("MASONRY","onCreateViewHolder "+viewType+" TILE_TYPE_FOOTER");
  46.                 View layoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_grid_bottom_links, parent, false);
  47.                 masonryView = new MasonryView(layoutView, viewType);
  48.                 layoutView.setOnTouchListener(this);
  49.                 break;
  50.             }
  51.  
  52.             case DashboardTileTypes.TILE_TYPE_SLIDESHOW:{ //Slide show
  53.                 Log.d("MASONRY","onCreateViewHolder "+viewType+" TILE_TYPE_SLIDESHOW");
  54.                 View layoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_grid_slideshow, parent, false);
  55.                 masonryView = new MasonryView(layoutView, viewType);
  56.                 break;
  57.             }
  58.             case DashboardTileTypes.TILE_TYPE_SPONSOR:{ //Sponsor
  59.                 Log.d("MASONRY","onCreateViewHolder "+viewType+" TILE_TYPE_SPONSOR");
  60.                 View layoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.dashboard_masonry_tile_sponsor, parent, false);
  61.                 masonryView = new MasonryView(layoutView, viewType);
  62.                 break;
  63.             }
  64.         }
  65.         return masonryView;
  66.     }
  67.     @Override
  68.     public void onBindViewHolder(MasonryView holder, int position) {
  69.         /*
  70.         different styles for different cells - Slideshow, tiles, Footer
  71.          */
  72.         switch(tileDefinitions.get(position).getTileType()){
  73.             //region slide show and footer
  74.             case DashboardTileTypes.TILE_TYPE_SLIDESHOW:{
  75.                 //Slideshow
  76.                 StaggeredGridLayoutManager.LayoutParams layoutParams = new StaggeredGridLayoutManager.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
  77.                 layoutParams.setFullSpan(true);
  78.                 layoutParams.setMargins(0,0,0,TILE_MARGIN_BOTTOM);
  79.                 holder.slideshowholder.setLayoutParams(layoutParams);
  80.                 slideShowManager sm=new slideShowManager(holder, parent);
  81.                 break;
  82.             }
  83.             case DashboardTileTypes.TILE_TYPE_FOOTER:{
  84.                 //Footer
  85.                 Log.d("MASONRY","onBindViewHolder "+position+" LOADING FOOTER");
  86.                 Log.d("MASONRY","onBindViewHolder "+holder.layout);
  87.                 StaggeredGridLayoutManager.LayoutParams layoutParams =
  88.                         new StaggeredGridLayoutManager.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
  89.                 layoutParams.setFullSpan(true);
  90.                 holder.layout.setLayoutParams(layoutParams);
  91.                 setupFooterTouchListeners(holder.hdsSiteLink, holder.tvLogoutLink, holder.tvDivider);
  92.                 break;
  93.             }
  94.             //end region
  95.             case DashboardTileTypes.TILE_TYPE_ONE_COLUMN__TILE:{
  96.                 //Tiles - set tile behavior
  97.                 Log.d("MASONRY", "getting image for " + position + " " + tileDefinitions.get(position).getIcon());
  98.                 holder.icon.setImageResource(tileDefinitions.get(position).getIcon());
  99.                 holder.title.setText(tileDefinitions.get(position).getTitle());
  100.                 holder.title.setTypeface(FontsHelper.HvNeueBold(context));
  101.                 holder.title.bringToFront();
  102.                 //Dynamic colors for our tiles
  103.                 ViewGroup.LayoutParams params = holder.layout.getLayoutParams();
  104.                 params.height=tileDefinitions.get(position).getSize(); //setting height
  105.                 holder.layout.setLayoutParams(params);
  106.                 holder.layout.setBackgroundColor(Color.parseColor("#" + tileDefinitions.get(position).getColor())); //setting color
  107.                 holder.layout.setTag(position);
  108.                 //margins
  109.                 ViewGroup.MarginLayoutParams llparams = (ViewGroup.MarginLayoutParams)  holder.layout.getLayoutParams();
  110.                 llparams.bottomMargin=5;
  111.  
  112.                 break;
  113.             }
  114.             case DashboardTileTypes.TILE_TYPE_FULL_WIDTH_TILE:{
  115.                 //Tiles - set tile behavior
  116.                 Log.d("MASONRY", "getting image for " + position + " " + tileDefinitions.get(position).getIcon());
  117.                 StaggeredGridLayoutManager.LayoutParams layoutParams =
  118.                         new StaggeredGridLayoutManager.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
  119.                 layoutParams.setFullSpan(true);
  120.                 holder.layout.setLayoutParams(layoutParams);
  121.                 holder.icon.setImageResource(tileDefinitions.get(position).getIcon());
  122.                 holder.title.setText(tileDefinitions.get(position).getTitle());
  123.                 holder.title.setTypeface(FontsHelper.HvNeueBold(context));
  124.                 holder.title.bringToFront();
  125.                 //Dynamic colors for our tiles
  126.                 ViewGroup.LayoutParams params = holder.layout.getLayoutParams();
  127.                 params.height=tileDefinitions.get(position).getSize(); //setting height
  128.                 holder.layout.setLayoutParams(params);
  129.                 holder.layout.setBackgroundColor(Color.parseColor("#" + tileDefinitions.get(position).getColor())); //setting color
  130.                 holder.layout.setTag(position);
  131.                 //margins
  132.                 ViewGroup.MarginLayoutParams llparams = (ViewGroup.MarginLayoutParams)  holder.layout.getLayoutParams();
  133.                 llparams.bottomMargin=5;
  134.                 break;
  135.             }
  136.             case DashboardTileTypes.TILE_TYPE_SPONSOR:{
  137.                 //Footer
  138.                 Log.d("MASONRY", "onBindViewHolder " + position + " LOADING SPONSOR");
  139.                 Log.d("MASONRY", "onBindViewHolder " + holder.layout);
  140.                 ViewGroup.LayoutParams params = holder.layout.getLayoutParams();
  141.                 params.height=tileDefinitions.get(position).getSize(); //setting height
  142.                 holder.layout.setLayoutParams(params);
  143.                 //margins
  144.                 ViewGroup.MarginLayoutParams llparams = (ViewGroup.MarginLayoutParams)  holder.layout.getLayoutParams();
  145.                 llparams.bottomMargin=5;
  146.                 break;
  147.             }
  148.         }
  149.     }
  150.  
  151.     @Override
  152.     public int getItemCount() {return tileDefinitions.size();}
  153.     @Override
  154.     public int getItemViewType(int position) {
  155.         // Return type based on position
  156.        int returnType= DashboardTileTypes.TILE_TYPE_ONE_COLUMN__TILE;
  157.        if(position==0) returnType=DashboardTileTypes.TILE_TYPE_SLIDESHOW;
  158.        //if(position==11) returnType=DashboardTileTypes.TILE_TYPE_SPONSOR;
  159.        if(position==11) returnType=DashboardTileTypes.TILE_TYPE_FOOTER;
  160.  
  161.         return returnType;
  162.     }
  163.     /*
  164.     Touch listener for tiles
  165.      */
  166.     @Override
  167.     public boolean onTouch(View v, MotionEvent event) {
  168.  
  169.         switch (event.getAction()) {
  170.             case MotionEvent.ACTION_DOWN:
  171.                 v.setAlpha(0.5f);
  172.                 break;
  173.             case MotionEvent.ACTION_UP:
  174.                 v.setAlpha(1);
  175.                 if(v.getTag()==null) return true;
  176.                 int tag=(int)v.getTag();
  177.                 System.out.println("Touched tag " + v.getTag());
  178.                 Home h=(Home)parent.getActivity();
  179.                 switch(tag){
  180.                     case 0: break; //Slider
  181.                     case 1: h.displayView(1);break;
  182.                     case 2: h.displayView(2);break;
  183.                     case 3: h.displayView(3);break;
  184.                     case 4: h.displayView(4);break;
  185.                     case 5: h.displayView(5);break;
  186.                     case 6: h.displayView(6);break;
  187.                     case 7: h.displayView(7);break;
  188.                     case 8: h.displayView(8);break;
  189.                     case 9: h.displayView(9);break;
  190.                     case 10: h.displayView(10);break;
  191.  
  192.  
  193.                 }
  194.                 break;
  195.             case MotionEvent.ACTION_CANCEL:
  196.                 v.setAlpha(1);
  197.                 break;
  198.         }
  199.         return true;
  200.     }
  201.  
  202.     /*
  203.     Holder View creation
  204.      */
  205.     class MasonryView extends RecyclerView.ViewHolder {
  206.         ImageView icon;
  207.         TextView title;
  208.         LinearLayout layout;
  209.         //Footer stuff
  210.         TextView hdsSiteLink, tvLogoutLink, tvDivider;
  211.         //Slider stuff
  212.         LinearLayout slideshowholder;
  213.         AutoScrollViewPager mPager;
  214.         TextView txtMessage;
  215.         CirclePageIndicator circleIndicator;
  216.         RelativeLayout rlProgress;
  217.         public MasonryView(View itemView, int type) {
  218.             super(itemView);
  219.             switch (type){
  220.                 case DashboardTileTypes.TILE_TYPE_ONE_COLUMN__TILE:{
  221.                     //Grid
  222.                     icon = (ImageView) itemView.findViewById(R.id.imgTile);
  223.                     title = (TextView) itemView.findViewById(R.id.txtTitle);
  224.                     layout = (LinearLayout) itemView.findViewById(R.id.llView);
  225.                     break;
  226.                 }
  227.                 case DashboardTileTypes.TILE_TYPE_FOOTER:{
  228.                     //Footer
  229.                     layout = (LinearLayout) itemView.findViewById(R.id.rlFooterHolder);
  230.                     hdsSiteLink=(TextView) itemView.findViewById(R.id.tvURL);
  231.                     tvDivider=(TextView) itemView.findViewById(R.id.tvDivider);
  232.                     tvLogoutLink=(TextView) itemView.findViewById(R.id.tvLogout);
  233.                     break;
  234.                 }
  235.                 case DashboardTileTypes.TILE_TYPE_SLIDESHOW:{
  236.                     //Slide show stuff
  237.                     System.out.println("MASONRY"+ itemView.findViewById(R.id.pager_new));
  238.                     slideshowholder = (LinearLayout) itemView.findViewById(R.id.llHolder);
  239.                     mPager=(AutoScrollViewPager) itemView.findViewById(R.id.pager_new);
  240.                     txtMessage=(TextView) itemView.findViewById(R.id.txt_message);
  241.                     circleIndicator= (CirclePageIndicator) itemView.findViewById(R.id.circleIndicator);
  242.                     rlProgress=(RelativeLayout) itemView.findViewById(R.id.rlProgress);
  243.                     break;
  244.                 }
  245.                 case DashboardTileTypes.TILE_TYPE_SPONSOR:{
  246.                     //Sponsor
  247.                     layout = (LinearLayout) itemView.findViewById(R.id.llView);
  248.                     break;
  249.                 }
  250.             }
  251.  
  252.         }
  253.     }
  254.  
  255.  
  256.  
  257.     private void setupFooterTouchListeners(TextView website, TextView logout, TextView divider){
  258.         //region footer
  259.         website.setTypeface(FontsHelper.HvNeueBold(context));
  260.         divider.setTypeface(FontsHelper.HvNeueBold(context));
  261.         logout.setTypeface(FontsHelper.HvNeueBold(context));
  262.         //Open website
  263.         website.setOnTouchListener(new View.OnTouchListener() {
  264.             @Override
  265.             public boolean onTouch(View v, MotionEvent event) {
  266.                 switch (event.getAction()) {
  267.                     case MotionEvent.ACTION_DOWN:
  268.                         v.setAlpha(0.5f);
  269.                         break;
  270.                     case MotionEvent.ACTION_UP:
  271.                         v.setAlpha(1);
  272.                         Home h=(Home)parent.getActivity();
  273.                         h.displayCustomWebPageInFragment(Constants.URL_HDS,0,"HDS Website",true);
  274.                         break;
  275.                     case MotionEvent.ACTION_CANCEL:
  276.                         v.setAlpha(1);
  277.                         break;
  278.                 }
  279.                 return true;
  280.             }
  281.         });
  282.         //Logout Link
  283.         logout.setOnTouchListener(new View.OnTouchListener() {
  284.             @Override
  285.             public boolean onTouch(View v, MotionEvent event) {
  286.                 switch (event.getAction()) {
  287.                     case MotionEvent.ACTION_DOWN:
  288.                         v.setAlpha(0.5f);
  289.                         break;
  290.                     case MotionEvent.ACTION_UP:
  291.                         v.setAlpha(1);
  292.                         MaterialDialog dialog = new MaterialDialog.Builder(context)
  293.                                 .title("Log out")
  294.                                 .content("Are you sure?")
  295.                                 .positiveText("Yes")
  296.                                 .positiveColor(context.getResources().getColor(R.color.jelly_bean))
  297.                                 .negativeText("No")
  298.                                 .neutralText("Cancel")
  299.                                 .negativeColor(context.getResources().getColor(R.color.dark_gray))
  300.                                 .typeface(FontsHelper.HvStdBd(context), FontsHelper.HvStdLt(context))
  301.                                 .callback(new MaterialDialog.ButtonCallback() {
  302.                                     @Override
  303.                                     public void onPositive(MaterialDialog dialog) {
  304.                                         super.onPositive(dialog);
  305.                                         dialog.cancel();
  306.                                         Hawk.remove("CURRENT_USER_NAME");
  307.                                         Hawk.remove("CURRENT_USER_ID");
  308.                                         Intent mainIntent = new Intent(context, Login.class);
  309.                                         mainIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
  310.                                         context.startActivity(mainIntent);
  311.                                         //Analytics
  312.                                         Utils.sendAnalytics(context.getString(R.string.ga_logout), context.getString(R.string.ga_cat_home), context.getString(R.string.ga_label_home));
  313.                                         ((Home) context).finish();
  314.                                     }
  315.  
  316.                                     @Override
  317.                                     public void onNegative(MaterialDialog dialog) {
  318.                                         super.onNegative(dialog);
  319.                                         dialog.cancel();
  320.                                     }
  321.  
  322.                                     @Override
  323.                                     public void onNeutral(MaterialDialog dialog) {
  324.                                         super.onNeutral(dialog);
  325.                                         dialog.cancel();
  326.                                     }
  327.                                 })
  328.                                 .show();
  329.                         break;
  330.                     case MotionEvent.ACTION_CANCEL:
  331.                         v.setAlpha(1);
  332.                         break;
  333.                 }
  334.                 return true;
  335.             }
  336.         });
  337.         //endregion
  338.     }
  339.  
  340.  
  341.     /**
  342.      * Class to manage slide show
  343.      */
  344.     private class slideShowManager {
  345.         MasonryView sv;
  346.         Fragment parent;
  347.         ArrayList items=new ArrayList();
  348.         public slideShowManager(MasonryView sv, Fragment parent){
  349.             this.sv=sv;
  350.             this.parent=parent;
  351.             setupSlideshow();
  352.         }
  353.  
  354.         private void setupSlideshow(){
  355.             parent.getActivity().runOnUiThread(new Runnable() {
  356.                 @Override
  357.                 public void run() {
  358.                     getSlideShow();
  359.                 }
  360.             });
  361.         }
  362.         private void viewPagerSliderConfig()
  363.         {
  364.             sv.mPager.setInterval(3000);
  365.             sv.mPager.setAutoScrollDurationFactor(1.5f);
  366.             sv.mPager.startAutoScroll();
  367.             try
  368.             {
  369.                 Field field = ViewPager.class.getDeclaredField("mScroller");
  370.                 field.setAccessible(true);
  371.                 FixedSpeedScroller fixedspeedscroller = new FixedSpeedScroller(sv.mPager.getContext(), new AccelerateInterpolator());
  372.                 fixedspeedscroller.setFixedDuration(1000);
  373.                 field.set(sv.mPager, fixedspeedscroller);
  374.  
  375.                 return;
  376.             }
  377.             catch (Exception exception)
  378.             {
  379.                 return;
  380.             }
  381.         }
  382.         /**
  383.          * Manage the circle page indicator
  384.          */
  385.         private void setCirclePageIndicator(){
  386.             sv.circleIndicator.setViewPager(sv.mPager);
  387.             sv.circleIndicator.setBackgroundColor(parent.getActivity().getResources().getColor(R.color.m_ripple_dark));
  388.             final float density = parent.getResources().getDisplayMetrics().density;
  389.             sv.circleIndicator.setRadius(4 * density);
  390.             sv.circleIndicator.setOnPageChangeListener(new android.support.v4.view.ViewPager.OnPageChangeListener() {
  391.  
  392.                 public void onPageScrollStateChanged(int i) {
  393.                 }
  394.  
  395.                 public void onPageScrolled(int i, float f, int j) {
  396.  
  397.                 }
  398.  
  399.                 public void onPageSelected(int i) {
  400.                     //When page changes update title
  401.                     String title = ((BannerItems) items.get(i)).get_title();
  402.                     sv.txtMessage.setText(title);
  403.                 }
  404.  
  405.             });
  406.  
  407.  
  408.         }
  409.         private void getSlideShow(){
  410.             final BannerAdapter mAdapter = new BannerAdapter(parent.getFragmentManager());
  411.             viewPagerSliderConfig();
  412.             AsyncHttpClient client = new AsyncHttpClient();
  413.             final String url= Constants.API_SERVER+Constants.API_PATH+"home_slider_new.php";
  414.             //final String url= "https://wearecrave.com/wip/veeru/test1.php";
  415.             System.out.println("URL " + url);
  416.             RequestParams params = new RequestParams();
  417.             params.put("country", Hawk.get("CURRENT_USER_COUNTRY"));
  418.             params.put("user_id", Hawk.get("CURRENT_USER_ID"));
  419.             params.put("session_code", Hawk.get("CURRENT_USER_SESSION"));
  420.             System.out.println("Params " + params);
  421.             //A quick check if we have the json ready
  422.             if(Hawk.get("SLIDER_JSON")!=null){
  423.                 System.out.println("Getting from Hawk");
  424.                 processJSON(Hawk.get("SLIDER_JSON").toString(),mAdapter);
  425.                 return;
  426.             }
  427.  
  428.             client.post(url, params, new AsyncHttpResponseHandler() {
  429.                 @Override
  430.                 public void onStart() {
  431.                     super.onStart();
  432.                     Utils.showView(sv.rlProgress, 200);
  433.                 }
  434.  
  435.                 @Override
  436.                 public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
  437.                     String response = new String(responseBody);
  438.                     Hawk.put("SLIDER_JSON",response);
  439.                     processJSON(response, mAdapter);
  440.                 }
  441.  
  442.                 @Override
  443.                 public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
  444.                     items.clear();
  445.                     BannerItems banneritems = new BannerItems();
  446.                     banneritems.setBannerUrl("https://hdsapac.com//partnerhub/mobileapp/webview/img/uploads/sliders/pentaho-joins-hds-extending-leadership.jpg");
  447.                     banneritems.setTitle("Slide 1");
  448.                     banneritems.setTarget("");
  449.                     items.add(banneritems);
  450.                     banneritems.setBannerUrl("https://hdsapac.com//partnerhub/mobileapp/webview/img/uploads/sliders/software.jpg");
  451.                     banneritems.setTitle("Slide 2");
  452.                     banneritems.setTarget("");
  453.                     items.add(banneritems);
  454.                     banneritems.setBannerUrl("https://hdsapac.com//partnerhub/mobileapp/webview/img/default.jpg");
  455.                     banneritems.setTitle("Slide 3");
  456.                     banneritems.setTarget("");
  457.                     items.add(banneritems);
  458.                     Utils.showAlertDialog(parent.getActivity(), "HDS App", "Server Error. Could not load new slideshow", true);
  459.                     mAdapter.updateItems(items);
  460.                     sv.mPager.setAdapter(mAdapter);
  461.                     setCirclePageIndicator();
  462.  
  463.                 }
  464.  
  465.                 @Override
  466.                 public void onFinish() {
  467.                     super.onFinish();
  468.                     Utils.hideView(sv.rlProgress, 200);
  469.                 }
  470.             });
  471.         }
  472.  
  473.         private void processJSON(String responseBody,BannerAdapter mAdapter){
  474.             if (Constants.DEBUG)
  475.                 System.out.println("Response for slider url" + responseBody);
  476.             try {
  477.                 JSONObject jsonObj = new JSONObject(responseBody);
  478.                 JSONObject resultsBody = jsonObj.getJSONObject("body"); //The root of the json data
  479.                 if (!resultsBody.getString("status").equals("error")) {
  480.                     Utils.hideView(sv.rlProgress, 200);
  481.                     items.clear();
  482.                     JSONObject bodyObject = jsonObj.getJSONObject("body");
  483.                     JSONArray sliders = bodyObject.getJSONArray("sliders");
  484.                     for (int i = 0; i < sliders.length(); i++) {
  485.                         BannerItems banneritems = new BannerItems();
  486.                         JSONObject slide = sliders.getJSONObject(i);
  487.                         banneritems.setBannerUrl(slide.getString("slider_url"));
  488.                         banneritems.setTitle(slide.getString("slider_desc"));
  489.                         banneritems.setTarget(slide.getString("slider_link"));
  490.                         banneritems.set_isAPI(slide.getInt("is_api"));
  491.                         banneritems.set_webViewtitle(slide.getString("slider_title"));
  492.                         items.add(banneritems);
  493.                     }
  494.                 } else {
  495.                     showFeedError(jsonObj.getJSONObject("body").getString("remarks"));
  496.                 }
  497.             } catch (JSONException e) {
  498.                 e.printStackTrace();
  499.  
  500.             } finally {
  501.                 mAdapter.updateItems(items);
  502.                 sv.mPager.setAdapter(mAdapter);
  503.                 setCirclePageIndicator();
  504.             }
  505.         }
  506.         private void showFeedError(String message){
  507.             MaterialDialog dialog = new MaterialDialog.Builder(parent.getActivity())
  508.                     .title("Server error")
  509.                     .content(message)
  510.                     .positiveText("RETRY")
  511.                     .positiveColor(parent.getActivity().getResources().getColor(R.color.jelly_bean))
  512.                     .negativeText("CANCEL")
  513.                     .negativeColor(parent.getActivity().getResources().getColor(R.color.md_red_A700))
  514.                     .typeface(FontsHelper.HvStdBd(parent.getActivity()), FontsHelper.HvStdLt(parent.getActivity()))
  515.                     .callback(new MaterialDialog.ButtonCallback() {
  516.                         @Override
  517.                         public void onPositive(MaterialDialog dialog) {
  518.                             super.onPositive(dialog);
  519.                             dialog.cancel();
  520.                             try {
  521.                                 getSlideShow();
  522.                             } catch (Exception e) {
  523.                                 e.printStackTrace();
  524.                             }
  525.                         }
  526.  
  527.                         @Override
  528.                         public void onNegative(MaterialDialog dialog) {
  529.                             dialog.cancel();
  530.                         }
  531.                     })
  532.                     .show();
  533.         }
  534.     }
  535.  
  536.     public class BannerAdapter extends FragmentStatePagerAdapter {
  537.         BannerFragment bf;
  538.         private List adItems;
  539.         public BannerAdapter(FragmentManager fm) {
  540.             super(fm);
  541.         }
  542.  
  543.         public int getCount(){
  544.             return adItems.size();
  545.         }
  546.         public void updateItems(List list)
  547.         {
  548.             adItems = list;
  549.             notifyDataSetChanged();
  550.         }
  551.  
  552.         public Fragment getItem(int i){
  553.  
  554.             BannerItems bi=(BannerItems)adItems.get(i); //pass item to fragment - and load it with picasso
  555.             BannerFragment bf=new BannerFragment();
  556.             Bundle args=null;
  557.             args=new Bundle();
  558.             args.putString("URL",bi.get_bannerUrl());
  559.             args.putString("TARGET",bi.get_target());
  560.             args.putInt("API",bi.get_isAPI());
  561.             args.putString("TITLE",bi.get_webViewtitle());
  562.             bf.setArguments(args);
  563.             return bf;
  564.         }
  565.     }
  566.  
  567. }
Add Comment
Please, Sign In to add comment