Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,10 @@
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Toast;

import com.weiwangcn.betterspinner.R;
import com.weiwangcn.betterspinner.library.BetterSpinner;
Expand Down Expand Up @@ -38,6 +41,14 @@ protected void onCreate(Bundle savedInstanceState) {
spinner1.setAdapter(adapter);
spinner2.setAdapter(adapter);

AdapterView.OnItemClickListener listener = new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Toast.makeText(MainActivity.this, parent.getAdapter().getItem(position).toString(), Toast.LENGTH_SHORT).show();
}
};
spinner1.setOnItemClickListener(listener);
spinner2.setOnItemClickListener(listener);
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,34 +6,25 @@
import android.support.v4.content.ContextCompat;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;

import com.rengwuxian.materialedittext.MaterialAutoCompleteTextView;

import java.util.Calendar;

public class MaterialBetterSpinner extends MaterialAutoCompleteTextView {

public class MaterialBetterSpinner extends MaterialAutoCompleteTextView implements AdapterView.OnItemClickListener {

private static final int MAX_CLICK_DURATION = 200;
private long startClickTime;
private boolean isPopup;

public MaterialBetterSpinner(Context context) {
super(context);
setOnItemClickListener(this);
}

public MaterialBetterSpinner(Context arg0, AttributeSet arg1) {
super(arg0, arg1);
setOnItemClickListener(this);
public MaterialBetterSpinner(Context context, AttributeSet attrs) {
super(context, attrs);
}

public MaterialBetterSpinner(Context arg0, AttributeSet arg1, int arg2) {
super(arg0, arg1, arg2);
setOnItemClickListener(this);
public MaterialBetterSpinner(Context context, AttributeSet attrs, int style) {
super(context, attrs, style);
}

@Override
Expand All @@ -60,30 +51,29 @@ protected void onFocusChanged(boolean focused, int direction,
public boolean onTouchEvent(MotionEvent event) {

switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
startClickTime = Calendar.getInstance().getTimeInMillis();
break;
}
case MotionEvent.ACTION_UP: {
long clickDuration = Calendar.getInstance().getTimeInMillis() - startClickTime;
if (clickDuration < MAX_CLICK_DURATION) {
if (isPopup) {
dismissDropDown();
isPopup = false;
} else {
requestFocus();
showDropDown();
isPopup = true;
}
if (isPopup) {
dismissDropDown();
} else {
requestFocus();
showDropDown();
}
break;
}
}

return super.onTouchEvent(event);
}

@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
public void showDropDown() {
super.showDropDown();
isPopup = true;
}

@Override
public void dismissDropDown() {
super.dismissDropDown();
isPopup = false;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,32 +6,23 @@
import android.support.v4.content.ContextCompat;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.AutoCompleteTextView;

import java.util.Calendar;
public class BetterSpinner extends AutoCompleteTextView {

public class BetterSpinner extends AutoCompleteTextView implements AdapterView.OnItemClickListener {

private static final int MAX_CLICK_DURATION = 200;
private long startClickTime;
private boolean isPopup;

public BetterSpinner(Context context) {
super(context);
setOnItemClickListener(this);
}

public BetterSpinner(Context arg0, AttributeSet arg1) {
super(arg0, arg1);
setOnItemClickListener(this);
}

public BetterSpinner(Context arg0, AttributeSet arg1, int arg2) {
super(arg0, arg1, arg2);
setOnItemClickListener(this);
}

@Override
Expand All @@ -58,30 +49,29 @@ protected void onFocusChanged(boolean focused, int direction,
public boolean onTouchEvent(MotionEvent event) {

switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
startClickTime = Calendar.getInstance().getTimeInMillis();
break;
}
case MotionEvent.ACTION_UP: {
long clickDuration = Calendar.getInstance().getTimeInMillis() - startClickTime;
if (clickDuration < MAX_CLICK_DURATION) {
if (isPopup) {
dismissDropDown();
isPopup = false;
} else {
requestFocus();
showDropDown();
isPopup = true;
}
if (isPopup) {
dismissDropDown();
} else {
requestFocus();
showDropDown();
}
break;
}
}

return super.onTouchEvent(event);
}

@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
public void showDropDown() {
super.showDropDown();
isPopup = true;
}

@Override
public void dismissDropDown() {
super.dismissDropDown();
isPopup = false;
}

Expand All @@ -94,5 +84,4 @@ public void setCompoundDrawablesWithIntrinsicBounds(Drawable left, Drawable top,
}
super.setCompoundDrawablesWithIntrinsicBounds(left, top, right, bottom);
}

}