package com.marshalchen.ultimaterecyclerview.demo.loadmoredemo; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.Handler; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.StaggeredGridLayoutManager; import android.support.v7.widget.Toolbar; import android.view.ActionMode; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Spinner; import com.marshalchen.ultimaterecyclerview.DragDropTouchListener; import com.marshalchen.ultimaterecyclerview.ItemTouchListenerAdapter; import com.marshalchen.ultimaterecyclerview.ObservableScrollState; import com.marshalchen.ultimaterecyclerview.ObservableScrollViewCallbacks; import com.marshalchen.ultimaterecyclerview.URLogs; import com.marshalchen.ultimaterecyclerview.UltimateRecyclerView; import com.marshalchen.ultimaterecyclerview.demo.R; import com.marshalchen.ultimaterecyclerview.layoutmanagers.ClassicSpanGridLayoutManager; import com.marshalchen.ultimaterecyclerview.quickAdapter.easyRegularAdapter; import com.marshalchen.ultimaterecyclerview.ui.AnimationType; import com.marshalchen.ultimaterecyclerview.layoutmanagers.ScrollSmoothLineaerLayoutManager; /** * Created by hesk on 19/2/16. */ public abstract class BasicFunctions extends AppCompatActivity { protected UltimateRecyclerView ultimateRecyclerView; protected void enableParallaxHeader() { ultimateRecyclerView.setParallaxHeader(getLayoutInflater().inflate(R.layout.parallax_recyclerview_header, ultimateRecyclerView.mRecyclerView, false)); ultimateRecyclerView.setOnParallaxScroll(new UltimateRecyclerView.OnParallaxScroll() { @Override public void onParallaxScroll(float percentage, float offset, View parallax) { Drawable c = toolbar.getBackground(); c.setAlpha(Math.round(127 + percentage * 128)); toolbar.setBackgroundDrawable(c); } }); } protected void enableLoadMore() { // StickyRecyclerHeadersDecoration headersDecor = new StickyRecyclerHeadersDecoration(simpleRecyclerViewAdapter); // ultimateRecyclerView.addItemDecoration(headersDecor); ultimateRecyclerView.setLoadMoreView(R.layout.custom_bottom_progressbar); ultimateRecyclerView.setOnLoadMoreListener(new UltimateRecyclerView.OnLoadMoreListener() { @Override public void loadMore(int itemsCount, final int maxLastVisiblePosition) { status_progress = true; Handler handler = new Handler(); handler.postDelayed(new Runnable() { public void run() { onLoadmore(); status_progress = false; } }, 500); } }); } protected abstract void onLoadmore(); protected abstract void onFireRefresh(); protected void enableRefresh() { // ultimateRecyclerView.setDefaultOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { // @Override // public void onRefresh() { // new Handler().postDelayed(new Runnable() { // @Override // public void run() { // onFireRefresh(); // } // }, 1000); // } // }); // ultimateRecyclerView.setDefaultSwipeToRefreshColorScheme(getResources().getColor(android.R.color.holo_blue_bright), // getResources().getColor(android.R.color.holo_green_light), // getResources().getColor(android.R.color.holo_orange_light), // getResources().getColor(android.R.color.holo_red_light)); } protected final void configStaggerLayoutManager(UltimateRecyclerView rv, easyRegularAdapter ad) { StaggeredGridLayoutManager gaggeredGridLayoutManager = new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL); rv.setLayoutManager(gaggeredGridLayoutManager); } protected final void configGridLayoutManager(UltimateRecyclerView rv, easyRegularAdapter ad) { final ClassicSpanGridLayoutManager mgm = new ClassicSpanGridLayoutManager(this, 2, ad); rv.setLayoutManager(mgm); } protected final void configLinearLayoutManager(UltimateRecyclerView rv) { final ScrollSmoothLineaerLayoutManager mgm = new ScrollSmoothLineaerLayoutManager(this, LinearLayoutManager.VERTICAL, false, 300); rv.setLayoutManager(mgm); } protected final void enableScrollControl() { ultimateRecyclerView.setScrollViewCallbacks(new ObservableScrollViewCallbacks() { @Override public void onScrollChanged(int scrollY, boolean firstScroll, boolean dragging) { URLogs.d("onScrollChanged: " + dragging); } @Override public void onDownMotionEvent() { } @Override public void onUpOrCancelMotionEvent(ObservableScrollState observableScrollState) { URLogs.d("onUpOrCancelMotionEvent"); if (observableScrollState == ObservableScrollState.UP) { ultimateRecyclerView.hideToolbar(toolbar, ultimateRecyclerView, getScreenHeight()); ultimateRecyclerView.hideFloatingActionMenu(); } else if (observableScrollState == ObservableScrollState.DOWN) { ultimateRecyclerView.showToolbar(toolbar, ultimateRecyclerView, getScreenHeight()); ultimateRecyclerView.showFloatingActionMenu(); } } }); ultimateRecyclerView.showFloatingButtonView(); } protected void enableEmptyViewPolicy() { // ultimateRecyclerView.setEmptyView(R.layout.empty_view, UltimateRecyclerView.EMPTY_KEEP_HEADER_AND_LOARMORE); // ultimateRecyclerView.setEmptyView(R.layout.empty_view, UltimateRecyclerView.EMPTY_KEEP_HEADER); // ultimateRecyclerView.setEmptyView(R.layout.empty_view, UltimateRecyclerView.EMPTY_SHOW_LOADMORE_ONLY); ultimateRecyclerView.setEmptyView(R.layout.empty_view, UltimateRecyclerView.EMPTY_CLEAR_ALL); } protected void enableSwipe() { } protected void enableItemClick() { ItemTouchListenerAdapter itemTouchListenerAdapter = new ItemTouchListenerAdapter(ultimateRecyclerView.mRecyclerView, new ItemTouchListenerAdapter.RecyclerViewOnItemClickListener() { @Override public void onItemClick(RecyclerView parent, View clickedView, int position) { } @Override public void onItemLongClick(RecyclerView parent, View clickedView, int position) { URLogs.d("onItemLongClick()" + isDrag); if (isDrag) { URLogs.d("onItemLongClick()" + isDrag); // dragDropTouchListener.startDrag(); // ultimateRecyclerView.enableDefaultSwipeRefresh(false); } } }); ultimateRecyclerView.mRecyclerView.addOnItemTouchListener(itemTouchListenerAdapter); } protected abstract void addButtonTrigger(); protected abstract void removeButtonTrigger(); protected void setupSpinnerSelection(Spinner sp, ArrayAdapter<String> adapter) { adapter.add("- select -"); /** * a list of selection for other tests */ for (Route type : Route.values()) { adapter.add(type.getNameDisplay()); } sp.setAdapter(adapter); sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { if (position > 0) { Route.values()[position - 1].start(getApplication()); } } @Override public void onNothingSelected(AdapterView<?> parent) { } }); } protected void setupSpinnerAnimationSelection(Spinner spinner, ArrayAdapter<String> adapter) { adapter.add("- animator -"); for (AnimationType type : AnimationType.values()) { adapter.add(type.name()); } spinner.setAdapter(adapter); spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { if (position > 0) { ultimateRecyclerView.setItemAnimator(AnimationType.values()[position - 1].getAnimator()); ultimateRecyclerView.getItemAnimator().setAddDuration(300); ultimateRecyclerView.getItemAnimator().setRemoveDuration(300); } } @Override public void onNothingSelected(AdapterView<?> parent) { } }); } private void bButtons() { findViewById(R.id.add).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { addButtonTrigger(); } }); findViewById(R.id.del).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { removeButtonTrigger(); } }); findViewById(R.id.toggle).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { toggleButtonTrigger(); } }); } protected void toggleButtonTrigger() { if (!status_progress) { isEnableAutoLoadMore = !isEnableAutoLoadMore; if (isEnableAutoLoadMore) { ultimateRecyclerView.reenableLoadmore(); } } } protected ActionMode actionMode; protected Toolbar toolbar; protected LinearLayoutManager linearLayoutManager; private int moreNum = 2; protected boolean isDrag = true, isEnableAutoLoadMore = true, status_progress = false; private DragDropTouchListener dragDropTouchListener; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_loadmore); toolbar = (Toolbar) findViewById(R.id.tool_bar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayShowTitleEnabled(false); ultimateRecyclerView = (UltimateRecyclerView) findViewById(R.id.ultimate_recycler_view); doURV(ultimateRecyclerView); bButtons(); ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1); setupSpinnerSelection((Spinner) findViewById(R.id.spinner), spinnerAdapter); } public int getScreenHeight() { return findViewById(android.R.id.content).getHeight(); } protected abstract void doURV(UltimateRecyclerView urv); }