Forked from rodrigohenriques/ClickToSelectEditText.java
Last active
August 29, 2015 14:25
-
-
Save rafaelwkerr/7ce4141bc03da3ff067a to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package br.com.jinkings.soluciona.application.ui.customview; | |
import android.annotation.TargetApi; | |
import android.app.AlertDialog; | |
import android.content.Context; | |
import android.content.DialogInterface; | |
import android.graphics.Canvas; | |
import android.os.Build; | |
import android.util.AttributeSet; | |
import android.view.View; | |
import android.widget.EditText; | |
import java.util.List; | |
import br.com.jinkings.financing.R; | |
public class ClickToSelectEditText<T extends Listable> extends EditText { | |
List<T> mItems; | |
String[] mListableItems; | |
CharSequence mHint; | |
OnItemSelectedListener<T> onItemSelectedListener; | |
public ClickToSelectEditText(Context context) { | |
super(context); | |
mHint = getHint(); | |
} | |
public ClickToSelectEditText(Context context, AttributeSet attrs) { | |
super(context, attrs); | |
mHint = getHint(); | |
} | |
public ClickToSelectEditText(Context context, AttributeSet attrs, int defStyleAttr) { | |
super(context, attrs, defStyleAttr); | |
mHint = getHint(); | |
} | |
@TargetApi(Build.VERSION_CODES.LOLLIPOP) | |
public ClickToSelectEditText(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { | |
super(context, attrs, defStyleAttr, defStyleRes); | |
mHint = getHint(); | |
} | |
@Override | |
protected void onDraw(Canvas canvas) { | |
super.onDraw(canvas); | |
setFocusable(false); | |
setClickable(true); | |
} | |
public void setItems(List<T> items) { | |
this.mItems = items; | |
this.mListableItems = new String[items.size()]; | |
int i = 0; | |
for (T item : mItems) { | |
mListableItems[i++] = item.getLabel(); | |
} | |
configureOnClickListener(); | |
} | |
private void configureOnClickListener() { | |
setOnClickListener(new OnClickListener() { | |
@Override | |
public void onClick(View view) { | |
AlertDialog.Builder builder = new AlertDialog.Builder(view.getContext()); | |
builder.setTitle(mHint); | |
builder.setItems(mListableItems, new DialogInterface.OnClickListener() { | |
@Override | |
public void onClick(DialogInterface dialogInterface, int selectedIndex) { | |
setText(mListableItems[selectedIndex]); | |
if (onItemSelectedListener != null) { | |
onItemSelectedListener.onItemSelectedListener(mItems.get(selectedIndex)); | |
} | |
} | |
}); | |
builder.setPositiveButton(R.string.signup_job_type_dialog_cancel_button, null); | |
builder.create().show(); | |
} | |
}); | |
} | |
public void setOnItemSelectedListener(OnItemSelectedListener<T> onItemSelectedListener) { | |
this.onItemSelectedListener = onItemSelectedListener; | |
} | |
public interface OnItemSelectedListener<T> { | |
void onItemSelectedListener(T item); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment