Guest User

Adapter-Trimmed

a guest
Jan 11th, 2016
578
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 16.30 KB | None | 0 0
  1.  
  2.  
  3. /**
  4.  * Created by VeeruI764 on 11/23/2015.
  5.  */
  6. public class MasonryAdapter extends RecyclerView.Adapter<MasonryAdapter.MasonryView> implements  View.OnTouchListener{
  7.  
  8.  
  9.     private Context context;
  10.     private Fragment parent;
  11.  
  12.     private int TILE_MARGIN_BOTTOM=5;
  13.     private List<DashboardTile> tileDefinitions=new ArrayList<DashboardTile>();
  14.  
  15.  
  16.     public MasonryAdapter(Context context,DashboardStaggered parent) {
  17.         this.context = context;
  18.         this.parent = parent;
  19.         //Create tiles
  20.         tileDefinitions.add(new DashboardTile(R.drawable.ic_dec_news,"Slide Show","9E0026",0,true,DashboardTileTypes.TILE_TYPE_SLIDESHOW)); //0
  21.         tileDefinitions.add(new DashboardTile(R.drawable.ic_dec_news,"News","A21E23",800,false,DashboardTileTypes.TILE_TYPE_ONE_COLUMN__TILE)); //1
  22.         tileDefinitions.add(new DashboardTile(R.drawable.ic_dec_event,"Events","008EAA",400,false,DashboardTileTypes.TILE_TYPE_ONE_COLUMN__TILE)); //2
  23.         tileDefinitions.add(new DashboardTile(R.drawable.ic_dec_resources,"Resources","539E3E",400,false,DashboardTileTypes.TILE_TYPE_ONE_COLUMN__TILE)); //3
  24.         tileDefinitions.add(new DashboardTile(R.drawable.ic_dec_winaprize,"Win a Prize","F89B1C",400,false,DashboardTileTypes.TILE_TYPE_FULL_WIDTH_TILE)); //4
  25.         tileDefinitions.add(new DashboardTile(R.drawable.ic_dec_polling,"Polling","A8CF5A",400,false,DashboardTileTypes.TILE_TYPE_ONE_COLUMN__TILE)); //5
  26.         tileDefinitions.add(new DashboardTile(R.drawable.ic_dec_webinar,"Webinar","814199",800,false,DashboardTileTypes.TILE_TYPE_ONE_COLUMN__TILE)); //6
  27.         tileDefinitions.add(new DashboardTile(R.drawable.ic_dec_qa,"Q & A","13ADA0",400,false,DashboardTileTypes.TILE_TYPE_ONE_COLUMN__TILE)); //6
  28.         tileDefinitions.add(new DashboardTile(R.drawable.ic_dec_solutions,"Solutions","00507E",400,false,DashboardTileTypes.TILE_TYPE_FULL_WIDTH_TILE)); //7
  29.         tileDefinitions.add(new DashboardTile(R.drawable.ic_dec_contact,"Contact","0093B2",400,false,DashboardTileTypes.TILE_TYPE_ONE_COLUMN__TILE)); //8
  30.         tileDefinitions.add(new DashboardTile(R.drawable.ic_dec_profile,"Profile","555555",400,false,DashboardTileTypes.TILE_TYPE_ONE_COLUMN__TILE)); //9
  31.         //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!
  32.         tileDefinitions.add(new DashboardTile(R.drawable.ic_dec_news,"Footer","53921A",0,true,DashboardTileTypes.TILE_TYPE_FOOTER)); //12
  33.  
  34.  
  35.     }
  36.  
  37.     @Override
  38.     public MasonryView onCreateViewHolder(ViewGroup parent, int viewType) {
  39.         MasonryView masonryView=null;
  40.         Log.d("MASONRY","onCreateViewHolder "+viewType+" rendering");
  41.         switch (viewType){
  42.             case DashboardTileTypes.TILE_TYPE_ONE_COLUMN__TILE: { //Normal tile
  43.                 Log.d("MASONRY", "onCreateViewHolder " + viewType + " TILE_TYPE_ONE_COLUMN__TILE");
  44.                 View layoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.dashboard_masonry_tile, parent, false);
  45.                 masonryView = new MasonryView(layoutView, viewType);
  46.                 layoutView.setOnTouchListener(this);
  47.                 break;
  48.             }
  49.             case DashboardTileTypes.TILE_TYPE_FOOTER:{ //Footer
  50.                 Log.d("MASONRY","onCreateViewHolder "+viewType+" TILE_TYPE_FOOTER");
  51.                 View layoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_grid_bottom_links, parent, false);
  52.                 masonryView = new MasonryView(layoutView, viewType);
  53.                 layoutView.setOnTouchListener(this);
  54.                 break;
  55.             }
  56.  
  57.             case DashboardTileTypes.TILE_TYPE_SLIDESHOW:{ //Slide show
  58.                 Log.d("MASONRY","onCreateViewHolder "+viewType+" TILE_TYPE_SLIDESHOW");
  59.                 View layoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_grid_slideshow, parent, false);
  60.                 masonryView = new MasonryView(layoutView, viewType);
  61.                 break;
  62.             }
  63.             case DashboardTileTypes.TILE_TYPE_SPONSOR:{ //Sponsor
  64.                 Log.d("MASONRY","onCreateViewHolder "+viewType+" TILE_TYPE_SPONSOR");
  65.                 View layoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.dashboard_masonry_tile_sponsor, parent, false);
  66.                 masonryView = new MasonryView(layoutView, viewType);
  67.                 break;
  68.             }
  69.         }
  70.         return masonryView;
  71.     }
  72.     @Override
  73.     public void onBindViewHolder(final MasonryView holder, int position) {
  74.         /*
  75.         different styles for different cells - Slideshow, tiles, Footer
  76.          */
  77.         switch(tileDefinitions.get(position).getTileType()){
  78.             //region slide show and footer
  79.             case DashboardTileTypes.TILE_TYPE_SLIDESHOW:{
  80.                 //Slideshow
  81.                 StaggeredGridLayoutManager.LayoutParams layoutParams = new StaggeredGridLayoutManager.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
  82.                 layoutParams.setFullSpan(true);
  83.                 layoutParams.setMargins(0, 0, 0, TILE_MARGIN_BOTTOM);
  84.                 holder.slideshowholder.setLayoutParams(layoutParams);
  85.                 new Handler(Looper.getMainLooper()).post(new Runnable() {
  86.                     @Override
  87.                     public void run() {
  88.                         slideShowManager sm=new slideShowManager(holder, parent);
  89.                     }
  90.                 });
  91.                 break;
  92.             }
  93.             case DashboardTileTypes.TILE_TYPE_FOOTER:{
  94.                 //Footer
  95.                 Log.d("MASONRY","onBindViewHolder "+position+" LOADING FOOTER");
  96.                 Log.d("MASONRY","onBindViewHolder "+holder.layout);
  97.                 StaggeredGridLayoutManager.LayoutParams layoutParams =
  98.                         new StaggeredGridLayoutManager.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
  99.                 layoutParams.setFullSpan(true);
  100.                 holder.layout.setLayoutParams(layoutParams);
  101.                 setupFooterTouchListeners(holder.hdsSiteLink, holder.tvLogoutLink, holder.tvDivider);
  102.                 break;
  103.             }
  104.             //end region
  105.             case DashboardTileTypes.TILE_TYPE_ONE_COLUMN__TILE:{
  106.                 //Tiles - set tile behavior
  107.                 Log.d("MASONRY", "getting image for " + position + " " + tileDefinitions.get(position).getIcon());
  108.                 holder.icon.setImageResource(tileDefinitions.get(position).getIcon());
  109.                 holder.title.setText(tileDefinitions.get(position).getTitle());
  110.                 holder.title.setTypeface(FontsHelper.HvNeueBold(context));
  111.                 holder.title.bringToFront();
  112.                 //Dynamic colors for our tiles
  113.                 ViewGroup.LayoutParams params = holder.layout.getLayoutParams();
  114.                 params.height=tileDefinitions.get(position).getSize(); //setting height
  115.                 holder.layout.setLayoutParams(params);
  116.                 holder.layout.setBackgroundColor(Color.parseColor("#" + tileDefinitions.get(position).getColor())); //setting color
  117.                 holder.layout.setTag(position);
  118.                 //margins
  119.                 ViewGroup.MarginLayoutParams llparams = (ViewGroup.MarginLayoutParams)  holder.layout.getLayoutParams();
  120.                 llparams.bottomMargin=5;
  121.  
  122.                 break;
  123.             }
  124.             case DashboardTileTypes.TILE_TYPE_FULL_WIDTH_TILE:{
  125.                 //Tiles - set tile behavior
  126.                 Log.d("MASONRY", "getting image for " + position + " " + tileDefinitions.get(position).getIcon());
  127.                 StaggeredGridLayoutManager.LayoutParams layoutParams =
  128.                         new StaggeredGridLayoutManager.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
  129.                 layoutParams.setFullSpan(true);
  130.                 holder.layout.setLayoutParams(layoutParams);
  131.                 holder.icon.setImageResource(tileDefinitions.get(position).getIcon());
  132.                 holder.title.setText(tileDefinitions.get(position).getTitle());
  133.                 holder.title.setTypeface(FontsHelper.HvNeueBold(context));
  134.                 holder.title.bringToFront();
  135.                 //Dynamic colors for our tiles
  136.                 ViewGroup.LayoutParams params = holder.layout.getLayoutParams();
  137.                 params.height=tileDefinitions.get(position).getSize(); //setting height
  138.                 holder.layout.setLayoutParams(params);
  139.                 holder.layout.setBackgroundColor(Color.parseColor("#" + tileDefinitions.get(position).getColor())); //setting color
  140.                 holder.layout.setTag(position);
  141.                 //margins
  142.                 ViewGroup.MarginLayoutParams llparams = (ViewGroup.MarginLayoutParams)  holder.layout.getLayoutParams();
  143.                 llparams.bottomMargin=5;
  144.                 break;
  145.             }
  146.             case DashboardTileTypes.TILE_TYPE_SPONSOR:{
  147.                 //Footer
  148.                 Log.d("MASONRY", "onBindViewHolder " + position + " LOADING SPONSOR");
  149.                 Log.d("MASONRY", "onBindViewHolder " + holder.layout);
  150.                 ViewGroup.LayoutParams params = holder.layout.getLayoutParams();
  151.                 params.height=tileDefinitions.get(position).getSize(); //setting height
  152.                 holder.layout.setLayoutParams(params);
  153.                 //margins
  154.                 ViewGroup.MarginLayoutParams llparams = (ViewGroup.MarginLayoutParams)  holder.layout.getLayoutParams();
  155.                 llparams.bottomMargin=5;
  156.                 break;
  157.             }
  158.         }
  159.     }
  160.  
  161.     @Override
  162.     public int getItemCount() {return tileDefinitions.size();}
  163.     @Override
  164.     public int getItemViewType(int position) {
  165.         // Return type based on position
  166.        int returnType= DashboardTileTypes.TILE_TYPE_ONE_COLUMN__TILE;
  167.        if(position==0) returnType=DashboardTileTypes.TILE_TYPE_SLIDESHOW;
  168.        //if(position==11) returnType=DashboardTileTypes.TILE_TYPE_SPONSOR;
  169.        if(position==11) returnType=DashboardTileTypes.TILE_TYPE_FOOTER;
  170.  
  171.         return returnType;
  172.     }
  173.     /*
  174.     Touch listener for tiles
  175.      */
  176.     @Override
  177.     public boolean onTouch(View v, MotionEvent event) {
  178.  
  179.     }
  180.  
  181.     /*
  182.     Holder View creation
  183.      */
  184.     class MasonryView extends RecyclerView.ViewHolder {
  185.         ImageView icon;
  186.         TextView title;
  187.         LinearLayout layout;
  188.         //Footer stuff
  189.         TextView hdsSiteLink, tvLogoutLink, tvDivider;
  190.         //Slider stuff
  191.         LinearLayout slideshowholder;
  192.         AutoScrollViewPager mPager;
  193.         TextView txtMessage;
  194.         CirclePageIndicator circleIndicator;
  195.         RelativeLayout rlProgress;
  196.         public MasonryView(View itemView, int type) {
  197.             super(itemView);
  198.             switch (type){
  199.                 case DashboardTileTypes.TILE_TYPE_ONE_COLUMN__TILE:{
  200.                     //Grid
  201.                     icon = (ImageView) itemView.findViewById(R.id.imgTile);
  202.                     title = (TextView) itemView.findViewById(R.id.txtTitle);
  203.                     layout = (LinearLayout) itemView.findViewById(R.id.llView);
  204.                     break;
  205.                 }
  206.                 case DashboardTileTypes.TILE_TYPE_FOOTER:{
  207.                     //Footer
  208.                     layout = (LinearLayout) itemView.findViewById(R.id.rlFooterHolder);
  209.                     hdsSiteLink=(TextView) itemView.findViewById(R.id.tvURL);
  210.                     tvDivider=(TextView) itemView.findViewById(R.id.tvDivider);
  211.                     tvLogoutLink=(TextView) itemView.findViewById(R.id.tvLogout);
  212.                     break;
  213.                 }
  214.                 case DashboardTileTypes.TILE_TYPE_SLIDESHOW:{
  215.                     //Slide show stuff
  216.                     System.out.println("MASONRY"+ itemView.findViewById(R.id.pager_new));
  217.                     slideshowholder = (LinearLayout) itemView.findViewById(R.id.llHolder);
  218.                     mPager=(AutoScrollViewPager) itemView.findViewById(R.id.pager_new);
  219.                     txtMessage=(TextView) itemView.findViewById(R.id.txt_message);
  220.                     circleIndicator= (CirclePageIndicator) itemView.findViewById(R.id.circleIndicator);
  221.                     rlProgress=(RelativeLayout) itemView.findViewById(R.id.rlProgress);
  222.                     break;
  223.                 }
  224.                 case DashboardTileTypes.TILE_TYPE_SPONSOR:{
  225.                     //Sponsor
  226.                     layout = (LinearLayout) itemView.findViewById(R.id.llView);
  227.                     break;
  228.                 }
  229.             }
  230.  
  231.         }
  232.     }
  233.  
  234.  
  235.  
  236.     private void setupFooterTouchListeners(TextView website, TextView logout, TextView divider){
  237.        
  238.         //endregion
  239.     }
  240.  
  241.  
  242.     /**
  243.      * Class to manage slide show
  244.      */
  245.     private class slideShowManager {
  246.         MasonryView sv;
  247.         Fragment parent;
  248.         ArrayList items=new ArrayList();
  249.         public slideShowManager(MasonryView sv, Fragment parent){
  250.             this.sv=sv;
  251.             this.parent=parent;
  252.             setupSlideshow();
  253.         }
  254.  
  255.         private void setupSlideshow(){
  256.             parent.getActivity().runOnUiThread(new Runnable() {
  257.                 @Override
  258.                 public void run() {
  259.                     getSlideShow();
  260.                 }
  261.             });
  262.         }
  263.         private void viewPagerSliderConfig()
  264.         {
  265.             sv.mPager.setInterval(3000);
  266.             sv.mPager.setAutoScrollDurationFactor(1.5f);
  267.             sv.mPager.startAutoScroll();
  268.             try
  269.             {
  270.                 Field field = ViewPager.class.getDeclaredField("mScroller");
  271.                 field.setAccessible(true);
  272.                 FixedSpeedScroller fixedspeedscroller = new FixedSpeedScroller(sv.mPager.getContext(), new AccelerateInterpolator());
  273.                 fixedspeedscroller.setFixedDuration(1000);
  274.                 field.set(sv.mPager, fixedspeedscroller);
  275.  
  276.                 return;
  277.             }
  278.             catch (Exception exception)
  279.             {
  280.                 return;
  281.             }
  282.         }
  283.         /**
  284.          * Manage the circle page indicator
  285.          */
  286.         private void setCirclePageIndicator(){
  287.             sv.circleIndicator.setViewPager(sv.mPager);
  288.             sv.circleIndicator.setBackgroundColor(parent.getActivity().getResources().getColor(R.color.m_ripple_dark));
  289.             final float density = parent.getResources().getDisplayMetrics().density;
  290.             sv.circleIndicator.setRadius(4 * density);
  291.             sv.circleIndicator.setOnPageChangeListener(new android.support.v4.view.ViewPager.OnPageChangeListener() {
  292.  
  293.                 public void onPageScrollStateChanged(int i) {
  294.                 }
  295.  
  296.                 public void onPageScrolled(int i, float f, int j) {
  297.  
  298.                 }
  299.  
  300.                 public void onPageSelected(int i) {
  301.                     //When page changes update title
  302.                     String title = ((BannerItems) items.get(i)).get_title();
  303.                     sv.txtMessage.setText(title);
  304.                 }
  305.  
  306.             });
  307.  
  308.  
  309.         }
  310.         private void getSlideShow(){
  311.             //get from server
  312.         }
  313.  
  314.         private void processJSON(String responseBody,BannerAdapter mAdapter){
  315.             //process json
  316.         }
  317.         private void showFeedError(String message){
  318.             //showing error
  319.         }
  320.     }
  321.  
  322.     public class BannerAdapter extends FragmentStatePagerAdapter {
  323.         BannerFragment bf;
  324.         private List adItems;
  325.         public BannerAdapter(FragmentManager fm) {
  326.             super(fm);
  327.         }
  328.  
  329.         public int getCount(){
  330.             return adItems.size();
  331.         }
  332.         public void updateItems(List list)
  333.         {
  334.             adItems = list;
  335.             notifyDataSetChanged();
  336.         }
  337.  
  338.         public Fragment getItem(int i){
  339.  
  340.             BannerItems bi=(BannerItems)adItems.get(i); //pass item to fragment - and load it with picasso
  341.             BannerFragment bf=new BannerFragment();
  342.             Bundle args=null;
  343.             args=new Bundle();
  344.             args.putString("URL",bi.get_bannerUrl());
  345.             args.putString("TARGET",bi.get_target());
  346.             args.putInt("API",bi.get_isAPI());
  347.             args.putString("TITLE",bi.get_webViewtitle());
  348.             bf.setArguments(args);
  349.             return bf;
  350.         }
  351.     }
  352.  
  353. }
Advertisement
Add Comment
Please, Sign In to add comment