Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class MasonryAdapter extends RecyclerView.Adapter<MasonryAdapter.MasonryView> implements View.OnTouchListener{
- private Context context;
- private Fragment parent;
- private int TILE_MARGIN_BOTTOM=5;
- private List<DashboardTile> tileDefinitions=new ArrayList<DashboardTile>();
- public MasonryAdapter(Context context,DashboardStaggered parent) {
- this.context = context;
- this.parent = parent;
- //Create tiles
- tileDefinitions.add(new DashboardTile(R.drawable.ic_dec_news,"Slide Show","9E0026",0,true,DashboardTileTypes.TILE_TYPE_SLIDESHOW)); //0
- tileDefinitions.add(new DashboardTile(R.drawable.ic_dec_news,"News","A21E23",800,false,DashboardTileTypes.TILE_TYPE_ONE_COLUMN__TILE)); //1
- tileDefinitions.add(new DashboardTile(R.drawable.ic_dec_event,"Events","008EAA",400,false,DashboardTileTypes.TILE_TYPE_ONE_COLUMN__TILE)); //2
- tileDefinitions.add(new DashboardTile(R.drawable.ic_dec_resources,"Resources","539E3E",400,false,DashboardTileTypes.TILE_TYPE_ONE_COLUMN__TILE)); //3
- tileDefinitions.add(new DashboardTile(R.drawable.ic_dec_winaprize,"Win a Prize","F89B1C",400,false,DashboardTileTypes.TILE_TYPE_FULL_WIDTH_TILE)); //4
- tileDefinitions.add(new DashboardTile(R.drawable.ic_dec_polling,"Polling","A8CF5A",400,false,DashboardTileTypes.TILE_TYPE_ONE_COLUMN__TILE)); //5
- tileDefinitions.add(new DashboardTile(R.drawable.ic_dec_webinar,"Webinar","814199",800,false,DashboardTileTypes.TILE_TYPE_ONE_COLUMN__TILE)); //6
- tileDefinitions.add(new DashboardTile(R.drawable.ic_dec_qa,"Q & A","13ADA0",400,false,DashboardTileTypes.TILE_TYPE_ONE_COLUMN__TILE)); //6
- tileDefinitions.add(new DashboardTile(R.drawable.ic_dec_solutions,"Solutions","00507E",400,false,DashboardTileTypes.TILE_TYPE_FULL_WIDTH_TILE)); //7
- tileDefinitions.add(new DashboardTile(R.drawable.ic_dec_contact,"Contact","0093B2",400,false,DashboardTileTypes.TILE_TYPE_ONE_COLUMN__TILE)); //8
- tileDefinitions.add(new DashboardTile(R.drawable.ic_dec_profile,"Profile","555555",400,false,DashboardTileTypes.TILE_TYPE_ONE_COLUMN__TILE)); //9
- //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!
- tileDefinitions.add(new DashboardTile(R.drawable.ic_dec_news,"Footer","53921A",0,true,DashboardTileTypes.TILE_TYPE_FOOTER)); //12
- }
- @Override
- public MasonryView onCreateViewHolder(ViewGroup parent, int viewType) {
- MasonryView masonryView=null;
- Log.d("MASONRY","onCreateViewHolder "+viewType+" rendering");
- switch (viewType){
- case DashboardTileTypes.TILE_TYPE_ONE_COLUMN__TILE: { //Normal tile
- Log.d("MASONRY", "onCreateViewHolder " + viewType + " TILE_TYPE_ONE_COLUMN__TILE");
- View layoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.dashboard_masonry_tile, parent, false);
- masonryView = new MasonryView(layoutView, viewType);
- layoutView.setOnTouchListener(this);
- break;
- }
- case DashboardTileTypes.TILE_TYPE_FOOTER:{ //Footer
- Log.d("MASONRY","onCreateViewHolder "+viewType+" TILE_TYPE_FOOTER");
- View layoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_grid_bottom_links, parent, false);
- masonryView = new MasonryView(layoutView, viewType);
- layoutView.setOnTouchListener(this);
- break;
- }
- case DashboardTileTypes.TILE_TYPE_SLIDESHOW:{ //Slide show
- Log.d("MASONRY","onCreateViewHolder "+viewType+" TILE_TYPE_SLIDESHOW");
- View layoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.view_grid_slideshow, parent, false);
- masonryView = new MasonryView(layoutView, viewType);
- break;
- }
- case DashboardTileTypes.TILE_TYPE_SPONSOR:{ //Sponsor
- Log.d("MASONRY","onCreateViewHolder "+viewType+" TILE_TYPE_SPONSOR");
- View layoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.dashboard_masonry_tile_sponsor, parent, false);
- masonryView = new MasonryView(layoutView, viewType);
- break;
- }
- }
- return masonryView;
- }
- @Override
- public void onBindViewHolder(MasonryView holder, int position) {
- /*
- different styles for different cells - Slideshow, tiles, Footer
- */
- switch(tileDefinitions.get(position).getTileType()){
- //region slide show and footer
- case DashboardTileTypes.TILE_TYPE_SLIDESHOW:{
- //Slideshow
- StaggeredGridLayoutManager.LayoutParams layoutParams = new StaggeredGridLayoutManager.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
- layoutParams.setFullSpan(true);
- layoutParams.setMargins(0,0,0,TILE_MARGIN_BOTTOM);
- holder.slideshowholder.setLayoutParams(layoutParams);
- slideShowManager sm=new slideShowManager(holder, parent);
- break;
- }
- case DashboardTileTypes.TILE_TYPE_FOOTER:{
- //Footer
- Log.d("MASONRY","onBindViewHolder "+position+" LOADING FOOTER");
- Log.d("MASONRY","onBindViewHolder "+holder.layout);
- StaggeredGridLayoutManager.LayoutParams layoutParams =
- new StaggeredGridLayoutManager.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
- layoutParams.setFullSpan(true);
- holder.layout.setLayoutParams(layoutParams);
- setupFooterTouchListeners(holder.hdsSiteLink, holder.tvLogoutLink, holder.tvDivider);
- break;
- }
- //end region
- case DashboardTileTypes.TILE_TYPE_ONE_COLUMN__TILE:{
- //Tiles - set tile behavior
- Log.d("MASONRY", "getting image for " + position + " " + tileDefinitions.get(position).getIcon());
- holder.icon.setImageResource(tileDefinitions.get(position).getIcon());
- holder.title.setText(tileDefinitions.get(position).getTitle());
- holder.title.setTypeface(FontsHelper.HvNeueBold(context));
- holder.title.bringToFront();
- //Dynamic colors for our tiles
- ViewGroup.LayoutParams params = holder.layout.getLayoutParams();
- params.height=tileDefinitions.get(position).getSize(); //setting height
- holder.layout.setLayoutParams(params);
- holder.layout.setBackgroundColor(Color.parseColor("#" + tileDefinitions.get(position).getColor())); //setting color
- holder.layout.setTag(position);
- //margins
- ViewGroup.MarginLayoutParams llparams = (ViewGroup.MarginLayoutParams) holder.layout.getLayoutParams();
- llparams.bottomMargin=5;
- break;
- }
- case DashboardTileTypes.TILE_TYPE_FULL_WIDTH_TILE:{
- //Tiles - set tile behavior
- Log.d("MASONRY", "getting image for " + position + " " + tileDefinitions.get(position).getIcon());
- StaggeredGridLayoutManager.LayoutParams layoutParams =
- new StaggeredGridLayoutManager.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
- layoutParams.setFullSpan(true);
- holder.layout.setLayoutParams(layoutParams);
- holder.icon.setImageResource(tileDefinitions.get(position).getIcon());
- holder.title.setText(tileDefinitions.get(position).getTitle());
- holder.title.setTypeface(FontsHelper.HvNeueBold(context));
- holder.title.bringToFront();
- //Dynamic colors for our tiles
- ViewGroup.LayoutParams params = holder.layout.getLayoutParams();
- params.height=tileDefinitions.get(position).getSize(); //setting height
- holder.layout.setLayoutParams(params);
- holder.layout.setBackgroundColor(Color.parseColor("#" + tileDefinitions.get(position).getColor())); //setting color
- holder.layout.setTag(position);
- //margins
- ViewGroup.MarginLayoutParams llparams = (ViewGroup.MarginLayoutParams) holder.layout.getLayoutParams();
- llparams.bottomMargin=5;
- break;
- }
- case DashboardTileTypes.TILE_TYPE_SPONSOR:{
- //Footer
- Log.d("MASONRY", "onBindViewHolder " + position + " LOADING SPONSOR");
- Log.d("MASONRY", "onBindViewHolder " + holder.layout);
- ViewGroup.LayoutParams params = holder.layout.getLayoutParams();
- params.height=tileDefinitions.get(position).getSize(); //setting height
- holder.layout.setLayoutParams(params);
- //margins
- ViewGroup.MarginLayoutParams llparams = (ViewGroup.MarginLayoutParams) holder.layout.getLayoutParams();
- llparams.bottomMargin=5;
- break;
- }
- }
- }
- @Override
- public int getItemCount() {return tileDefinitions.size();}
- @Override
- public int getItemViewType(int position) {
- // Return type based on position
- int returnType= DashboardTileTypes.TILE_TYPE_ONE_COLUMN__TILE;
- if(position==0) returnType=DashboardTileTypes.TILE_TYPE_SLIDESHOW;
- //if(position==11) returnType=DashboardTileTypes.TILE_TYPE_SPONSOR;
- if(position==11) returnType=DashboardTileTypes.TILE_TYPE_FOOTER;
- return returnType;
- }
- /*
- Touch listener for tiles
- */
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- switch (event.getAction()) {
- case MotionEvent.ACTION_DOWN:
- v.setAlpha(0.5f);
- break;
- case MotionEvent.ACTION_UP:
- v.setAlpha(1);
- if(v.getTag()==null) return true;
- int tag=(int)v.getTag();
- System.out.println("Touched tag " + v.getTag());
- Home h=(Home)parent.getActivity();
- switch(tag){
- case 0: break; //Slider
- case 1: h.displayView(1);break;
- case 2: h.displayView(2);break;
- case 3: h.displayView(3);break;
- case 4: h.displayView(4);break;
- case 5: h.displayView(5);break;
- case 6: h.displayView(6);break;
- case 7: h.displayView(7);break;
- case 8: h.displayView(8);break;
- case 9: h.displayView(9);break;
- case 10: h.displayView(10);break;
- }
- break;
- case MotionEvent.ACTION_CANCEL:
- v.setAlpha(1);
- break;
- }
- return true;
- }
- /*
- Holder View creation
- */
- class MasonryView extends RecyclerView.ViewHolder {
- ImageView icon;
- TextView title;
- LinearLayout layout;
- //Footer stuff
- TextView hdsSiteLink, tvLogoutLink, tvDivider;
- //Slider stuff
- LinearLayout slideshowholder;
- AutoScrollViewPager mPager;
- TextView txtMessage;
- CirclePageIndicator circleIndicator;
- RelativeLayout rlProgress;
- public MasonryView(View itemView, int type) {
- super(itemView);
- switch (type){
- case DashboardTileTypes.TILE_TYPE_ONE_COLUMN__TILE:{
- //Grid
- icon = (ImageView) itemView.findViewById(R.id.imgTile);
- title = (TextView) itemView.findViewById(R.id.txtTitle);
- layout = (LinearLayout) itemView.findViewById(R.id.llView);
- break;
- }
- case DashboardTileTypes.TILE_TYPE_FOOTER:{
- //Footer
- layout = (LinearLayout) itemView.findViewById(R.id.rlFooterHolder);
- hdsSiteLink=(TextView) itemView.findViewById(R.id.tvURL);
- tvDivider=(TextView) itemView.findViewById(R.id.tvDivider);
- tvLogoutLink=(TextView) itemView.findViewById(R.id.tvLogout);
- break;
- }
- case DashboardTileTypes.TILE_TYPE_SLIDESHOW:{
- //Slide show stuff
- System.out.println("MASONRY"+ itemView.findViewById(R.id.pager_new));
- slideshowholder = (LinearLayout) itemView.findViewById(R.id.llHolder);
- mPager=(AutoScrollViewPager) itemView.findViewById(R.id.pager_new);
- txtMessage=(TextView) itemView.findViewById(R.id.txt_message);
- circleIndicator= (CirclePageIndicator) itemView.findViewById(R.id.circleIndicator);
- rlProgress=(RelativeLayout) itemView.findViewById(R.id.rlProgress);
- break;
- }
- case DashboardTileTypes.TILE_TYPE_SPONSOR:{
- //Sponsor
- layout = (LinearLayout) itemView.findViewById(R.id.llView);
- break;
- }
- }
- }
- }
- private void setupFooterTouchListeners(TextView website, TextView logout, TextView divider){
- //region footer
- website.setTypeface(FontsHelper.HvNeueBold(context));
- divider.setTypeface(FontsHelper.HvNeueBold(context));
- logout.setTypeface(FontsHelper.HvNeueBold(context));
- //Open website
- website.setOnTouchListener(new View.OnTouchListener() {
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- switch (event.getAction()) {
- case MotionEvent.ACTION_DOWN:
- v.setAlpha(0.5f);
- break;
- case MotionEvent.ACTION_UP:
- v.setAlpha(1);
- Home h=(Home)parent.getActivity();
- h.displayCustomWebPageInFragment(Constants.URL_HDS,0,"HDS Website",true);
- break;
- case MotionEvent.ACTION_CANCEL:
- v.setAlpha(1);
- break;
- }
- return true;
- }
- });
- //Logout Link
- logout.setOnTouchListener(new View.OnTouchListener() {
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- switch (event.getAction()) {
- case MotionEvent.ACTION_DOWN:
- v.setAlpha(0.5f);
- break;
- case MotionEvent.ACTION_UP:
- v.setAlpha(1);
- MaterialDialog dialog = new MaterialDialog.Builder(context)
- .title("Log out")
- .content("Are you sure?")
- .positiveText("Yes")
- .positiveColor(context.getResources().getColor(R.color.jelly_bean))
- .negativeText("No")
- .neutralText("Cancel")
- .negativeColor(context.getResources().getColor(R.color.dark_gray))
- .typeface(FontsHelper.HvStdBd(context), FontsHelper.HvStdLt(context))
- .callback(new MaterialDialog.ButtonCallback() {
- @Override
- public void onPositive(MaterialDialog dialog) {
- super.onPositive(dialog);
- dialog.cancel();
- Hawk.remove("CURRENT_USER_NAME");
- Hawk.remove("CURRENT_USER_ID");
- Intent mainIntent = new Intent(context, Login.class);
- mainIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- context.startActivity(mainIntent);
- //Analytics
- Utils.sendAnalytics(context.getString(R.string.ga_logout), context.getString(R.string.ga_cat_home), context.getString(R.string.ga_label_home));
- ((Home) context).finish();
- }
- @Override
- public void onNegative(MaterialDialog dialog) {
- super.onNegative(dialog);
- dialog.cancel();
- }
- @Override
- public void onNeutral(MaterialDialog dialog) {
- super.onNeutral(dialog);
- dialog.cancel();
- }
- })
- .show();
- break;
- case MotionEvent.ACTION_CANCEL:
- v.setAlpha(1);
- break;
- }
- return true;
- }
- });
- //endregion
- }
- /**
- * Class to manage slide show
- */
- private class slideShowManager {
- MasonryView sv;
- Fragment parent;
- ArrayList items=new ArrayList();
- public slideShowManager(MasonryView sv, Fragment parent){
- this.sv=sv;
- this.parent=parent;
- setupSlideshow();
- }
- private void setupSlideshow(){
- parent.getActivity().runOnUiThread(new Runnable() {
- @Override
- public void run() {
- getSlideShow();
- }
- });
- }
- private void viewPagerSliderConfig()
- {
- sv.mPager.setInterval(3000);
- sv.mPager.setAutoScrollDurationFactor(1.5f);
- sv.mPager.startAutoScroll();
- try
- {
- Field field = ViewPager.class.getDeclaredField("mScroller");
- field.setAccessible(true);
- FixedSpeedScroller fixedspeedscroller = new FixedSpeedScroller(sv.mPager.getContext(), new AccelerateInterpolator());
- fixedspeedscroller.setFixedDuration(1000);
- field.set(sv.mPager, fixedspeedscroller);
- return;
- }
- catch (Exception exception)
- {
- return;
- }
- }
- /**
- * Manage the circle page indicator
- */
- private void setCirclePageIndicator(){
- sv.circleIndicator.setViewPager(sv.mPager);
- sv.circleIndicator.setBackgroundColor(parent.getActivity().getResources().getColor(R.color.m_ripple_dark));
- final float density = parent.getResources().getDisplayMetrics().density;
- sv.circleIndicator.setRadius(4 * density);
- sv.circleIndicator.setOnPageChangeListener(new android.support.v4.view.ViewPager.OnPageChangeListener() {
- public void onPageScrollStateChanged(int i) {
- }
- public void onPageScrolled(int i, float f, int j) {
- }
- public void onPageSelected(int i) {
- //When page changes update title
- String title = ((BannerItems) items.get(i)).get_title();
- sv.txtMessage.setText(title);
- }
- });
- }
- private void getSlideShow(){
- final BannerAdapter mAdapter = new BannerAdapter(parent.getFragmentManager());
- viewPagerSliderConfig();
- AsyncHttpClient client = new AsyncHttpClient();
- final String url= Constants.API_SERVER+Constants.API_PATH+"home_slider_new.php";
- //final String url= "https://wearecrave.com/wip/veeru/test1.php";
- System.out.println("URL " + url);
- RequestParams params = new RequestParams();
- params.put("country", Hawk.get("CURRENT_USER_COUNTRY"));
- params.put("user_id", Hawk.get("CURRENT_USER_ID"));
- params.put("session_code", Hawk.get("CURRENT_USER_SESSION"));
- System.out.println("Params " + params);
- //A quick check if we have the json ready
- if(Hawk.get("SLIDER_JSON")!=null){
- System.out.println("Getting from Hawk");
- processJSON(Hawk.get("SLIDER_JSON").toString(),mAdapter);
- return;
- }
- client.post(url, params, new AsyncHttpResponseHandler() {
- @Override
- public void onStart() {
- super.onStart();
- Utils.showView(sv.rlProgress, 200);
- }
- @Override
- public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
- String response = new String(responseBody);
- Hawk.put("SLIDER_JSON",response);
- processJSON(response, mAdapter);
- }
- @Override
- public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
- items.clear();
- BannerItems banneritems = new BannerItems();
- banneritems.setBannerUrl("https://hdsapac.com//partnerhub/mobileapp/webview/img/uploads/sliders/pentaho-joins-hds-extending-leadership.jpg");
- banneritems.setTitle("Slide 1");
- banneritems.setTarget("");
- items.add(banneritems);
- banneritems.setBannerUrl("https://hdsapac.com//partnerhub/mobileapp/webview/img/uploads/sliders/software.jpg");
- banneritems.setTitle("Slide 2");
- banneritems.setTarget("");
- items.add(banneritems);
- banneritems.setBannerUrl("https://hdsapac.com//partnerhub/mobileapp/webview/img/default.jpg");
- banneritems.setTitle("Slide 3");
- banneritems.setTarget("");
- items.add(banneritems);
- Utils.showAlertDialog(parent.getActivity(), "HDS App", "Server Error. Could not load new slideshow", true);
- mAdapter.updateItems(items);
- sv.mPager.setAdapter(mAdapter);
- setCirclePageIndicator();
- }
- @Override
- public void onFinish() {
- super.onFinish();
- Utils.hideView(sv.rlProgress, 200);
- }
- });
- }
- private void processJSON(String responseBody,BannerAdapter mAdapter){
- if (Constants.DEBUG)
- System.out.println("Response for slider url" + responseBody);
- try {
- JSONObject jsonObj = new JSONObject(responseBody);
- JSONObject resultsBody = jsonObj.getJSONObject("body"); //The root of the json data
- if (!resultsBody.getString("status").equals("error")) {
- Utils.hideView(sv.rlProgress, 200);
- items.clear();
- JSONObject bodyObject = jsonObj.getJSONObject("body");
- JSONArray sliders = bodyObject.getJSONArray("sliders");
- for (int i = 0; i < sliders.length(); i++) {
- BannerItems banneritems = new BannerItems();
- JSONObject slide = sliders.getJSONObject(i);
- banneritems.setBannerUrl(slide.getString("slider_url"));
- banneritems.setTitle(slide.getString("slider_desc"));
- banneritems.setTarget(slide.getString("slider_link"));
- banneritems.set_isAPI(slide.getInt("is_api"));
- banneritems.set_webViewtitle(slide.getString("slider_title"));
- items.add(banneritems);
- }
- } else {
- showFeedError(jsonObj.getJSONObject("body").getString("remarks"));
- }
- } catch (JSONException e) {
- e.printStackTrace();
- } finally {
- mAdapter.updateItems(items);
- sv.mPager.setAdapter(mAdapter);
- setCirclePageIndicator();
- }
- }
- private void showFeedError(String message){
- MaterialDialog dialog = new MaterialDialog.Builder(parent.getActivity())
- .title("Server error")
- .content(message)
- .positiveText("RETRY")
- .positiveColor(parent.getActivity().getResources().getColor(R.color.jelly_bean))
- .negativeText("CANCEL")
- .negativeColor(parent.getActivity().getResources().getColor(R.color.md_red_A700))
- .typeface(FontsHelper.HvStdBd(parent.getActivity()), FontsHelper.HvStdLt(parent.getActivity()))
- .callback(new MaterialDialog.ButtonCallback() {
- @Override
- public void onPositive(MaterialDialog dialog) {
- super.onPositive(dialog);
- dialog.cancel();
- try {
- getSlideShow();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- @Override
- public void onNegative(MaterialDialog dialog) {
- dialog.cancel();
- }
- })
- .show();
- }
- }
- public class BannerAdapter extends FragmentStatePagerAdapter {
- BannerFragment bf;
- private List adItems;
- public BannerAdapter(FragmentManager fm) {
- super(fm);
- }
- public int getCount(){
- return adItems.size();
- }
- public void updateItems(List list)
- {
- adItems = list;
- notifyDataSetChanged();
- }
- public Fragment getItem(int i){
- BannerItems bi=(BannerItems)adItems.get(i); //pass item to fragment - and load it with picasso
- BannerFragment bf=new BannerFragment();
- Bundle args=null;
- args=new Bundle();
- args.putString("URL",bi.get_bannerUrl());
- args.putString("TARGET",bi.get_target());
- args.putInt("API",bi.get_isAPI());
- args.putString("TITLE",bi.get_webViewtitle());
- bf.setArguments(args);
- return bf;
- }
- }
- }
Add Comment
Please, Sign In to add comment