From 280e0fc4b4de707e70a783b9ea7d26e96cdc4399 Mon Sep 17 00:00:00 2001
From: sang84020325 <879689064@qq.com>
Date: Sun, 14 May 2017 18:59:12 +0800
Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E6=AC=A1=E6=8F=90=E4=BA=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Basemodule/Basemodule.iml | 10 +-
Basemodule/build.gradle | 1 -
.../basemoudle/base/BaseListActivity.java | 4 +-
.../basemoudle/base/BaseListFragment.java | 5 +-
.../masterialspinner/MaterialSpinner.java | 527 -----
.../MaterialSpinnerAdapter.java | 53 -
.../MaterialSpinnerAdapterWrapper.java | 59 -
.../MaterialSpinnerBaseAdapter.java | 99 -
.../view/masterialspinner/Utils.java | 91 -
.../baseadapter/BaseItemDraggableAdapter.java | 257 +++
.../BaseMultiItemQuickAdapter.java | 66 +
.../weight/baseadapter/BaseQuickAdapter.java | 1891 +++++++++++++++++
.../baseadapter/BaseSectionQuickAdapter.java | 65 +
.../weight/baseadapter/BaseViewHolder.java | 599 ++++++
.../animation/AlphaInAnimation.java | 28 +
.../baseadapter/animation/BaseAnimation.java | 13 +
.../animation/ScaleInAnimation.java | 30 +
.../animation/SlideInBottomAnimation.java | 21 +
.../animation/SlideInLeftAnimation.java | 20 +
.../animation/SlideInRightAnimation.java | 20 +
.../callback/ItemDragAndSwipeCallback.java | 197 ++
.../entity/AbstractExpandableItem.java | 80 +
.../baseadapter/entity/IExpandable.java | 19 +
.../baseadapter/entity/MultiItemEntity.java | 10 +
.../baseadapter/entity/SectionEntity.java | 22 +
.../listener/OnItemChildClickListener.java | 39 +
.../OnItemChildLongClickListener.java | 37 +
.../listener/OnItemClickListener.java | 39 +
.../listener/OnItemDragListener.java | 13 +
.../listener/OnItemLongClickListener.java | 36 +
.../listener/OnItemSwipeListener.java | 39 +
.../listener/SimpleClickListener.java | 302 +++
.../baseadapter/loadmore/LoadMoreView.java | 117 +
.../loadmore/SimpleLoadMoreView.java | 27 +
.../baseadapter/util/MultiTypeDelegate.java | 90 +
.../baseadapter/util/TouchEventUtil.java | 29 +
.../main/res/layout/quick_view_load_more.xml | 60 +
Basemodule/src/main/res/values/attrs.xml | 35 -
Basemodule/src/main/res/values/dimens.xml | 13 +-
Basemodule/src/main/res/values/ids.xml | 5 +
Basemodule/src/main/res/values/strings.xml | 3 +-
app/app.iml | 46 +
app/build.gradle | 3 +
app/src/main/AndroidManifest.xml | 5 +
.../com/basemoudle/sample/MainActivity.java | 46 +-
.../sample/activity/MVCActivity.java | 32 +
.../sample/activity/MVPActivity.java | 61 +
.../java/com/basemoudle/sample/api/Api.java | 185 ++
.../basemoudle/sample/api/ApiConstants.java | 64 +
.../com/basemoudle/sample/api/ApiService.java | 18 +
.../com/basemoudle/sample/api/HostType.java | 38 +
.../basemoudle/sample/app/AppApplication.java | 18 +
.../java/com/basemoudle/sample/bean/User.java | 8 +
.../sample/contract/MVPContract.java | 30 +
.../com/basemoudle/sample/model/MVPModel.java | 20 +
.../sample/persenter/MVPPersenter.java | 27 +
app/src/main/res/layout/activity_main.xml | 21 +-
app/src/main/res/layout/activity_mvp.xml | 12 +
58 files changed, 4812 insertions(+), 893 deletions(-)
delete mode 100644 Basemodule/src/main/java/com/xusangbo/basemoudle/view/masterialspinner/MaterialSpinner.java
delete mode 100644 Basemodule/src/main/java/com/xusangbo/basemoudle/view/masterialspinner/MaterialSpinnerAdapter.java
delete mode 100644 Basemodule/src/main/java/com/xusangbo/basemoudle/view/masterialspinner/MaterialSpinnerAdapterWrapper.java
delete mode 100644 Basemodule/src/main/java/com/xusangbo/basemoudle/view/masterialspinner/MaterialSpinnerBaseAdapter.java
delete mode 100644 Basemodule/src/main/java/com/xusangbo/basemoudle/view/masterialspinner/Utils.java
create mode 100644 Basemodule/src/main/java/com/xusangbo/basemoudle/weight/baseadapter/BaseItemDraggableAdapter.java
create mode 100644 Basemodule/src/main/java/com/xusangbo/basemoudle/weight/baseadapter/BaseMultiItemQuickAdapter.java
create mode 100644 Basemodule/src/main/java/com/xusangbo/basemoudle/weight/baseadapter/BaseQuickAdapter.java
create mode 100644 Basemodule/src/main/java/com/xusangbo/basemoudle/weight/baseadapter/BaseSectionQuickAdapter.java
create mode 100644 Basemodule/src/main/java/com/xusangbo/basemoudle/weight/baseadapter/BaseViewHolder.java
create mode 100644 Basemodule/src/main/java/com/xusangbo/basemoudle/weight/baseadapter/animation/AlphaInAnimation.java
create mode 100644 Basemodule/src/main/java/com/xusangbo/basemoudle/weight/baseadapter/animation/BaseAnimation.java
create mode 100644 Basemodule/src/main/java/com/xusangbo/basemoudle/weight/baseadapter/animation/ScaleInAnimation.java
create mode 100644 Basemodule/src/main/java/com/xusangbo/basemoudle/weight/baseadapter/animation/SlideInBottomAnimation.java
create mode 100644 Basemodule/src/main/java/com/xusangbo/basemoudle/weight/baseadapter/animation/SlideInLeftAnimation.java
create mode 100644 Basemodule/src/main/java/com/xusangbo/basemoudle/weight/baseadapter/animation/SlideInRightAnimation.java
create mode 100644 Basemodule/src/main/java/com/xusangbo/basemoudle/weight/baseadapter/callback/ItemDragAndSwipeCallback.java
create mode 100644 Basemodule/src/main/java/com/xusangbo/basemoudle/weight/baseadapter/entity/AbstractExpandableItem.java
create mode 100644 Basemodule/src/main/java/com/xusangbo/basemoudle/weight/baseadapter/entity/IExpandable.java
create mode 100644 Basemodule/src/main/java/com/xusangbo/basemoudle/weight/baseadapter/entity/MultiItemEntity.java
create mode 100644 Basemodule/src/main/java/com/xusangbo/basemoudle/weight/baseadapter/entity/SectionEntity.java
create mode 100644 Basemodule/src/main/java/com/xusangbo/basemoudle/weight/baseadapter/listener/OnItemChildClickListener.java
create mode 100644 Basemodule/src/main/java/com/xusangbo/basemoudle/weight/baseadapter/listener/OnItemChildLongClickListener.java
create mode 100644 Basemodule/src/main/java/com/xusangbo/basemoudle/weight/baseadapter/listener/OnItemClickListener.java
create mode 100644 Basemodule/src/main/java/com/xusangbo/basemoudle/weight/baseadapter/listener/OnItemDragListener.java
create mode 100644 Basemodule/src/main/java/com/xusangbo/basemoudle/weight/baseadapter/listener/OnItemLongClickListener.java
create mode 100644 Basemodule/src/main/java/com/xusangbo/basemoudle/weight/baseadapter/listener/OnItemSwipeListener.java
create mode 100644 Basemodule/src/main/java/com/xusangbo/basemoudle/weight/baseadapter/listener/SimpleClickListener.java
create mode 100644 Basemodule/src/main/java/com/xusangbo/basemoudle/weight/baseadapter/loadmore/LoadMoreView.java
create mode 100644 Basemodule/src/main/java/com/xusangbo/basemoudle/weight/baseadapter/loadmore/SimpleLoadMoreView.java
create mode 100644 Basemodule/src/main/java/com/xusangbo/basemoudle/weight/baseadapter/util/MultiTypeDelegate.java
create mode 100644 Basemodule/src/main/java/com/xusangbo/basemoudle/weight/baseadapter/util/TouchEventUtil.java
create mode 100644 Basemodule/src/main/res/layout/quick_view_load_more.xml
create mode 100644 app/src/main/java/com/basemoudle/sample/activity/MVCActivity.java
create mode 100644 app/src/main/java/com/basemoudle/sample/activity/MVPActivity.java
create mode 100644 app/src/main/java/com/basemoudle/sample/api/Api.java
create mode 100644 app/src/main/java/com/basemoudle/sample/api/ApiConstants.java
create mode 100644 app/src/main/java/com/basemoudle/sample/api/ApiService.java
create mode 100644 app/src/main/java/com/basemoudle/sample/api/HostType.java
create mode 100644 app/src/main/java/com/basemoudle/sample/app/AppApplication.java
create mode 100644 app/src/main/java/com/basemoudle/sample/bean/User.java
create mode 100644 app/src/main/java/com/basemoudle/sample/contract/MVPContract.java
create mode 100644 app/src/main/java/com/basemoudle/sample/model/MVPModel.java
create mode 100644 app/src/main/java/com/basemoudle/sample/persenter/MVPPersenter.java
create mode 100644 app/src/main/res/layout/activity_mvp.xml
diff --git a/Basemodule/Basemodule.iml b/Basemodule/Basemodule.iml
index 385c075..8a97c5d 100644
--- a/Basemodule/Basemodule.iml
+++ b/Basemodule/Basemodule.iml
@@ -35,7 +35,6 @@
-
@@ -43,6 +42,7 @@
+
@@ -115,23 +115,23 @@
-
+
-
+
-
+
+
-
diff --git a/Basemodule/build.gradle b/Basemodule/build.gradle
index 4340da2..b6e30d4 100644
--- a/Basemodule/build.gradle
+++ b/Basemodule/build.gradle
@@ -28,7 +28,6 @@ dependencies {
compile 'com.android.support:appcompat-v7:24.+'
testCompile 'junit:junit:4.12'
compile 'com.android.support:recyclerview-v7:24.+'
- compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.+'
compile 'me.yokeyword:fragmentation:0.10.0'
//retrofit和rxjava
compile 'com.squareup.retrofit2:retrofit:2.0.0'
diff --git a/Basemodule/src/main/java/com/xusangbo/basemoudle/base/BaseListActivity.java b/Basemodule/src/main/java/com/xusangbo/basemoudle/base/BaseListActivity.java
index 5a1ddfd..5764891 100644
--- a/Basemodule/src/main/java/com/xusangbo/basemoudle/base/BaseListActivity.java
+++ b/Basemodule/src/main/java/com/xusangbo/basemoudle/base/BaseListActivity.java
@@ -5,9 +5,9 @@
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
-import com.chad.library.adapter.base.BaseQuickAdapter;
-import com.chad.library.adapter.base.BaseViewHolder;
import com.xusangbo.basemodule.R;
+import com.xusangbo.basemoudle.weight.baseadapter.BaseQuickAdapter;
+import com.xusangbo.basemoudle.weight.baseadapter.BaseViewHolder;
import java.util.ArrayList;
import java.util.List;
diff --git a/Basemodule/src/main/java/com/xusangbo/basemoudle/base/BaseListFragment.java b/Basemodule/src/main/java/com/xusangbo/basemoudle/base/BaseListFragment.java
index 275342b..fc33623 100644
--- a/Basemodule/src/main/java/com/xusangbo/basemoudle/base/BaseListFragment.java
+++ b/Basemodule/src/main/java/com/xusangbo/basemoudle/base/BaseListFragment.java
@@ -5,10 +5,9 @@
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
-import android.view.View;
-import com.chad.library.adapter.base.BaseQuickAdapter;
-import com.chad.library.adapter.base.BaseViewHolder;
import com.xusangbo.basemodule.R;
+import com.xusangbo.basemoudle.weight.baseadapter.BaseQuickAdapter;
+import com.xusangbo.basemoudle.weight.baseadapter.BaseViewHolder;
import java.util.ArrayList;
import java.util.List;
diff --git a/Basemodule/src/main/java/com/xusangbo/basemoudle/view/masterialspinner/MaterialSpinner.java b/Basemodule/src/main/java/com/xusangbo/basemoudle/view/masterialspinner/MaterialSpinner.java
deleted file mode 100644
index 0f687b9..0000000
--- a/Basemodule/src/main/java/com/xusangbo/basemoudle/view/masterialspinner/MaterialSpinner.java
+++ /dev/null
@@ -1,527 +0,0 @@
-/*
- * Copyright (C) 2016 Jared Rummler
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package com.xusangbo.basemoudle.view.masterialspinner;
-
-import android.animation.ObjectAnimator;
-import android.content.Context;
-import android.content.res.Resources;
-import android.content.res.TypedArray;
-import android.graphics.Color;
-import android.graphics.PorterDuff;
-import android.graphics.drawable.ColorDrawable;
-import android.graphics.drawable.Drawable;
-import android.graphics.drawable.StateListDrawable;
-import android.os.Build;
-import android.os.Bundle;
-import android.os.Parcelable;
-import android.support.annotation.ColorInt;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.util.AttributeSet;
-import android.util.Log;
-import android.view.Gravity;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.WindowManager;
-import android.widget.AdapterView;
-import android.widget.ListAdapter;
-import android.widget.ListView;
-import android.widget.PopupWindow;
-import android.widget.TextView;
-
-import com.xusangbo.basemodule.R;
-
-import java.lang.reflect.Method;
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * A spinner that shows a {@link PopupWindow} under the view when clicked.
- */
-public class MaterialSpinner extends TextView {
-
- private OnNothingSelectedListener onNothingSelectedListener;
- private OnItemSelectedListener onItemSelectedListener;
- private MaterialSpinnerBaseAdapter adapter;
- private PopupWindow popupWindow;
- private ListView listView;
- private Drawable arrowDrawable;
- private boolean hideArrow;
- private boolean nothingSelected;
- private int popupWindowMaxHeight;
- private int popupWindowHeight;
- private int selectedIndex;
- private int backgroundColor;
- private int arrowColor;
- private int arrowColorDisabled;
- private int textColor;
- private int numberOfItems;
-
- public MaterialSpinner(Context context) {
- super(context);
- init(context, null);
- }
-
- public MaterialSpinner(Context context, AttributeSet attrs) {
- super(context, attrs);
- init(context, attrs);
- }
-
- public MaterialSpinner(Context context, AttributeSet attrs, int defStyleAttr) {
- super(context, attrs, defStyleAttr);
- init(context, attrs);
- }
-
- private void init(Context context, AttributeSet attrs) {
- TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.MaterialSpinner);
- int defaultColor = getTextColors().getDefaultColor();
- boolean rtl = Utils.isRtl(context);
-
- try {
- backgroundColor = ta.getColor(R.styleable.MaterialSpinner_ms_background_color, Color.WHITE);
- textColor = ta.getColor(R.styleable.MaterialSpinner_ms_text_color, defaultColor);
- arrowColor = ta.getColor(R.styleable.MaterialSpinner_ms_arrow_tint, textColor);
- hideArrow = ta.getBoolean(R.styleable.MaterialSpinner_ms_hide_arrow, false);
- popupWindowMaxHeight = ta.getDimensionPixelSize(R.styleable.MaterialSpinner_ms_dropdown_max_height, 0);
- popupWindowHeight = ta.getLayoutDimension(R.styleable.MaterialSpinner_ms_dropdown_height,
- WindowManager.LayoutParams.WRAP_CONTENT);
- arrowColorDisabled = Utils.lighter(arrowColor, 0.8f);
- } finally {
- ta.recycle();
- }
-
- Resources resources = getResources();
- int left, right, bottom, top;
- left = right = bottom = top = resources.getDimensionPixelSize(R.dimen.ms__padding_top);
- if (rtl) {
- right = resources.getDimensionPixelSize(R.dimen.ms__padding_left);
- } else {
- left = resources.getDimensionPixelSize(R.dimen.ms__padding_left);
- }
-
- setGravity(Gravity.CENTER_VERTICAL | Gravity.START);
- setClickable(true);
- setPadding(left, top, right, bottom);
- setBackgroundResource(R.drawable.ms__selector);
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1 && rtl) {
- setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
- setTextDirection(View.TEXT_DIRECTION_RTL);
- }
-
- if (!hideArrow) {
- arrowDrawable = Utils.getDrawable(context, R.drawable.ms__arrow).mutate();
- arrowDrawable.setColorFilter(arrowColor, PorterDuff.Mode.SRC_IN);
- if (rtl) {
- setCompoundDrawablesWithIntrinsicBounds(arrowDrawable, null, null, null);
- } else {
- setCompoundDrawablesWithIntrinsicBounds(null, null, arrowDrawable, null);
- }
- }
-
- listView = new ListView(context);
- listView.setId(getId());
- listView.setDivider(null);
- listView.setItemsCanFocus(true);
- listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
-
- @Override public void onItemClick(AdapterView> parent, View view, int position, long id) {
- if (position >= selectedIndex && position < adapter.getCount()) {
- position++;
- }
- selectedIndex = position;
- nothingSelected = false;
- Object item = adapter.get(position);
- adapter.notifyItemSelected(position);
- setText(item.toString());
- collapse();
- if (onItemSelectedListener != null) {
- //noinspection unchecked
- onItemSelectedListener.onItemSelected(MaterialSpinner.this, position, id, item);
- }
- }
- });
-
- popupWindow = new PopupWindow(context);
- popupWindow.setContentView(listView);
- popupWindow.setOutsideTouchable(true);
- popupWindow.setFocusable(true);
-
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
- popupWindow.setElevation(16);
- popupWindow.setBackgroundDrawable(Utils.getDrawable(context, R.drawable.ms__drawable));
- } else {
- popupWindow.setBackgroundDrawable(Utils.getDrawable(context, R.drawable.ms__drop_down_shadow));
- }
-
- if (backgroundColor != Color.WHITE) { // default color is white
- setBackgroundColor(backgroundColor);
- }
- if (textColor != defaultColor) {
- setTextColor(textColor);
- }
-
- popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
-
- @Override public void onDismiss() {
- if (nothingSelected && onNothingSelectedListener != null) {
- onNothingSelectedListener.onNothingSelected(MaterialSpinner.this);
- }
- if (!hideArrow) {
- animateArrow(false);
- }
- }
- });
- }
-
- @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- popupWindow.setWidth(MeasureSpec.getSize(widthMeasureSpec));
- popupWindow.setHeight(calculatePopupWindowHeight());
- super.onMeasure(widthMeasureSpec, heightMeasureSpec);
- }
-
- @Override public boolean onTouchEvent(@NonNull MotionEvent event) {
- if (event.getAction() == MotionEvent.ACTION_UP) {
- if (isEnabled() && isClickable()) {
- if (!popupWindow.isShowing()) {
- expand();
- } else {
- collapse();
- }
- }
- }
- return super.onTouchEvent(event);
- }
-
- @Override public void setBackgroundColor(int color) {
- backgroundColor = color;
- Drawable background = getBackground();
- if (background instanceof StateListDrawable) { // pre-L
- try {
- Method getStateDrawable = StateListDrawable.class.getDeclaredMethod("getStateDrawable", int.class);
- if (!getStateDrawable.isAccessible()) getStateDrawable.setAccessible(true);
- int[] colors = {Utils.darker(color, 0.85f), color};
- for (int i = 0; i < colors.length; i++) {
- ColorDrawable drawable = (ColorDrawable) getStateDrawable.invoke(background, i);
- drawable.setColor(colors[i]);
- }
- } catch (Exception e) {
- Log.e("MaterialSpinner", "Error setting background color", e);
- }
- } else if (background != null) { // 21+ (RippleDrawable)
- background.setColorFilter(color, PorterDuff.Mode.SRC_IN);
- }
- popupWindow.getBackground().setColorFilter(color, PorterDuff.Mode.SRC_IN);
- }
-
- @Override public void setTextColor(int color) {
- textColor = color;
- super.setTextColor(color);
- }
-
- @Override public Parcelable onSaveInstanceState() {
- Bundle bundle = new Bundle();
- bundle.putParcelable("state", super.onSaveInstanceState());
- bundle.putInt("selected_index", selectedIndex);
- if (popupWindow != null) {
- bundle.putBoolean("is_popup_showing", popupWindow.isShowing());
- collapse();
- } else {
- bundle.putBoolean("is_popup_showing", false);
- }
- return bundle;
- }
-
- @Override public void onRestoreInstanceState(Parcelable savedState) {
- if (savedState instanceof Bundle) {
- Bundle bundle = (Bundle) savedState;
- selectedIndex = bundle.getInt("selected_index");
- if (adapter != null) {
- setText(adapter.get(selectedIndex).toString());
- adapter.notifyItemSelected(selectedIndex);
- }
- if (bundle.getBoolean("is_popup_showing")) {
- if (popupWindow != null) {
- // Post the show request into the looper to avoid bad token exception
- post(new Runnable() {
-
- @Override public void run() {
- expand();
- }
- });
- }
- }
- savedState = bundle.getParcelable("state");
- }
- super.onRestoreInstanceState(savedState);
- }
-
- @Override public void setEnabled(boolean enabled) {
- super.setEnabled(enabled);
- if (arrowDrawable != null) {
- arrowDrawable.setColorFilter(enabled ? arrowColor : arrowColorDisabled, PorterDuff.Mode.SRC_IN);
- }
- }
-
- /**
- * @return the selected item position
- */
- public int getSelectedIndex() {
- return selectedIndex;
- }
-
- /**
- * Set the default spinner item using its index
- *
- * @param position
- * the item's position
- */
- public void setSelectedIndex(int position) {
- if (adapter != null) {
- if (position >= 0 && position <= adapter.getCount()) {
- adapter.notifyItemSelected(position);
- selectedIndex = position;
- setText(adapter.get(position).toString());
- } else {
- throw new IllegalArgumentException("Position must be lower than adapter count!");
- }
- }
- }
-
- /**
- * Register a callback to be invoked when an item in the dropdown is selected.
- *
- * @param onItemSelectedListener
- * The callback that will run
- */
- public void setOnItemSelectedListener(@Nullable OnItemSelectedListener onItemSelectedListener) {
- this.onItemSelectedListener = onItemSelectedListener;
- }
-
- /**
- * Register a callback to be invoked when the {@link PopupWindow} is shown but the user didn't select an item.
- *
- * @param onNothingSelectedListener
- * the callback that will run
- */
- public void setOnNothingSelectedListener(@Nullable OnNothingSelectedListener onNothingSelectedListener) {
- this.onNothingSelectedListener = onNothingSelectedListener;
- }
-
- /**
- * Set the dropdown items
- *
- * @param items
- * A list of items
- * @param
- * The item type
- */
- public void setItems(@NonNull List items) {
- numberOfItems = items.size();
- adapter = new MaterialSpinnerAdapter<>(getContext(), items).setTextColor(textColor);
- setAdapterInternal(adapter);
- }
-
- /**
- * Set the dropdown items
- *
- * @param items
- * A list of items
- * @param
- * The item type
- */
- public void setItems(@NonNull T... items) {
- setItems(Arrays.asList(items));
- }
-
- /**
- * Get the list of items in the adapter
- *
- * @param
- * The item type
- * @return A list of items or {@code null} if no items are set.
- */
- public List getItems() {
- if (adapter == null) {
- return null;
- }
- //noinspection unchecked
- return adapter.getItems();
- }
-
- /**
- * Set a custom adapter for the dropdown items
- *
- * @param adapter
- * The list adapter
- */
- public void setAdapter(@NonNull ListAdapter adapter) {
- this.adapter = new MaterialSpinnerAdapterWrapper(getContext(), adapter);
- setAdapterInternal(this.adapter);
- }
-
- public void setAdapter(MaterialSpinnerAdapter adapter) {
- this.adapter = adapter;
- setAdapterInternal(adapter);
- }
-
- private void setAdapterInternal(@NonNull MaterialSpinnerBaseAdapter adapter) {
- listView.setAdapter(adapter);
- if (selectedIndex >= numberOfItems) {
- selectedIndex = 0;
- }
- setText(adapter.get(selectedIndex).toString());
- }
-
- /**
- * Show the dropdown menu
- */
- public void expand() {
- if (!hideArrow) {
- animateArrow(true);
- }
- nothingSelected = true;
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
- popupWindow.setOverlapAnchor(false);
- popupWindow.showAsDropDown(this);
- } else {
- int[] location = new int[2];
- getLocationOnScreen(location);
- int x = location[0];
- int y = getHeight() + location[1];
- popupWindow.showAtLocation(this, Gravity.TOP | Gravity.START, x, y);
- }
- }
-
- /**
- * Closes the dropdown menu
- */
- public void collapse() {
- if (!hideArrow) {
- animateArrow(false);
- }
- popupWindow.dismiss();
- }
-
- /**
- * Set the tint color for the dropdown arrow
- *
- * @param color
- * the color value
- */
- public void setArrowColor(@ColorInt int color) {
- arrowColor = color;
- arrowColorDisabled = Utils.lighter(arrowColor, 0.8f);
- if (arrowDrawable != null) {
- arrowDrawable.setColorFilter(arrowColor, PorterDuff.Mode.SRC_IN);
- }
- }
-
- private void animateArrow(boolean shouldRotateUp) {
- int start = shouldRotateUp ? 0 : 10000;
- int end = shouldRotateUp ? 10000 : 0;
- ObjectAnimator animator = ObjectAnimator.ofInt(arrowDrawable, "level", start, end);
- animator.start();
- }
-
- /**
- * Set the maximum height of the dropdown menu.
- *
- * @param height
- * the height in pixels
- */
- public void setDropdownMaxHeight(int height) {
- popupWindowMaxHeight = height;
- popupWindow.setHeight(calculatePopupWindowHeight());
- }
-
- /**
- * Set the height of the dropdown menu
- *
- * @param height
- * the height in pixels
- */
- public void setDropdownHeight(int height) {
- popupWindowHeight = height;
- popupWindow.setHeight(calculatePopupWindowHeight());
- }
-
- private int calculatePopupWindowHeight() {
- if (adapter == null) {
- return WindowManager.LayoutParams.WRAP_CONTENT;
- }
- float listViewHeight = adapter.getCount() * getResources().getDimension(R.dimen.ms__item_height);
- if (popupWindowMaxHeight > 0 && listViewHeight > popupWindowMaxHeight) {
- return popupWindowMaxHeight;
- } else if (popupWindowHeight != WindowManager.LayoutParams.MATCH_PARENT
- && popupWindowHeight != WindowManager.LayoutParams.WRAP_CONTENT
- && popupWindowHeight <= listViewHeight) {
- return popupWindowHeight;
- }
- return WindowManager.LayoutParams.WRAP_CONTENT;
- }
-
- /**
- * Get the {@link PopupWindow}.
- *
- * @return The {@link PopupWindow} that is displayed when the view has been clicked.
- */
- public PopupWindow getPopupWindow() {
- return popupWindow;
- }
-
- /**
- * Interface definition for a callback to be invoked when an item in this view has been selected.
- *
- * @param
- * Adapter item type
- */
- public interface OnItemSelectedListener {
-
- /**
- *
Callback method to be invoked when an item in this view has been selected. This callback is invoked only when
- * the newly selected position is different from the previously selected position or if there was no selected
- * item.
- *
- * @param view
- * The {@link MaterialSpinner} view
- * @param position
- * The position of the view in the adapter
- * @param id
- * The row id of the item that is selected
- * @param item
- * The selected item
- */
- void onItemSelected(MaterialSpinner view, int position, long id, T item);
-
- }
-
- /**
- * Interface definition for a callback to be invoked when the dropdown is dismissed and no item was selected.
- */
- public interface OnNothingSelectedListener {
-
- /**
- * Callback method to be invoked when the {@link PopupWindow} is dismissed and no item was selected.
- *
- * @param spinner
- * the {@link MaterialSpinner}
- */
- void onNothingSelected(MaterialSpinner spinner);
- }
-
-}
diff --git a/Basemodule/src/main/java/com/xusangbo/basemoudle/view/masterialspinner/MaterialSpinnerAdapter.java b/Basemodule/src/main/java/com/xusangbo/basemoudle/view/masterialspinner/MaterialSpinnerAdapter.java
deleted file mode 100644
index f297746..0000000
--- a/Basemodule/src/main/java/com/xusangbo/basemoudle/view/masterialspinner/MaterialSpinnerAdapter.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2016 Jared Rummler
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package com.xusangbo.basemoudle.view.masterialspinner;
-
-import android.content.Context;
-
-import java.util.List;
-
-public class MaterialSpinnerAdapter extends MaterialSpinnerBaseAdapter {
-
- private final List items;
-
- public MaterialSpinnerAdapter(Context context, List items) {
- super(context);
- this.items = items;
- }
-
- @Override public int getCount() {
- return items.size() - 1;
- }
-
- @Override public T getItem(int position) {
- if (position >= getSelectedIndex()) {
- return items.get(position + 1);
- } else {
- return items.get(position);
- }
- }
-
- @Override public T get(int position) {
- return items.get(position);
- }
-
- @Override public List getItems() {
- return items;
- }
-
-}
\ No newline at end of file
diff --git a/Basemodule/src/main/java/com/xusangbo/basemoudle/view/masterialspinner/MaterialSpinnerAdapterWrapper.java b/Basemodule/src/main/java/com/xusangbo/basemoudle/view/masterialspinner/MaterialSpinnerAdapterWrapper.java
deleted file mode 100644
index e4cf387..0000000
--- a/Basemodule/src/main/java/com/xusangbo/basemoudle/view/masterialspinner/MaterialSpinnerAdapterWrapper.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2016 Jared Rummler
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-package com.xusangbo.basemoudle.view.masterialspinner;
-
-import android.content.Context;
-import android.widget.ListAdapter;
-
-import java.util.ArrayList;
-import java.util.List;
-
-final class MaterialSpinnerAdapterWrapper extends MaterialSpinnerBaseAdapter {
-
- private final ListAdapter listAdapter;
-
- public MaterialSpinnerAdapterWrapper(Context context, ListAdapter toWrap) {
- super(context);
- listAdapter = toWrap;
- }
-
- @Override public int getCount() {
- return listAdapter.getCount() - 1;
- }
-
- @Override public Object getItem(int position) {
- if (position >= getSelectedIndex()) {
- return listAdapter.getItem(position + 1);
- } else {
- return listAdapter.getItem(position);
- }
- }
-
- @Override public Object get(int position) {
- return listAdapter.getItem(position);
- }
-
- @Override public List