package com.wisedu.scc.love.widget.dialog;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.Gravity;
import android.view.View;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.TextView;
import com.wisedu.scc.love.R;
import java.util.List;
import antistatic.spinnerwheel.WheelVerticalView;
import antistatic.spinnerwheel.adapters.ArrayWheelAdapter;
/**
* 旋转等待对话框
*/
public class SpinnerDialog extends Dialog{
WheelVerticalView wheelVerticalView;
Builder builder;
ImageView cancelBtn;
ImageView okBtn;
TextView titleTextView;
public SpinnerDialog(Context context) {
super(context);
}
public SpinnerDialog(Context context, int theme, Builder builder) {
super(context, theme);
this.builder = builder;
}
protected SpinnerDialog(Context context, boolean cancelable, OnCancelListener cancelListener) {
super(context, cancelable, cancelListener);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.common_widget_dialog_spinner);
initWindow();
findViews();
initView();
loadData();
}
private void initWindow(){
WindowManager.LayoutParams para = getWindow().getAttributes();
para.width = WindowManager.LayoutParams.MATCH_PARENT;
para.windowAnimations = R.style.SpinnerDialogAnim;
para.gravity = Gravity.BOTTOM;
}
private void findViews(){
wheelVerticalView = (WheelVerticalView) findViewById(R.id.common_vertical_wheel);
okBtn = (ImageView) findViewById(R.id.common_ok_btn);
cancelBtn = (ImageView) findViewById(R.id.common_cancel_btn);
titleTextView = (TextView) findViewById(R.id.common_title_text);
}
private void initView(){
okBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
builder.onSelectListener.onSelect(
wheelVerticalView.getCurrentItem(),
builder.stringList.get(wheelVerticalView.getCurrentItem()));
dismiss();
}
});
cancelBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dismiss();
}
});
}
private void loadData(){
String[] arr = builder.stringList.toArray(new String[builder.stringList.size()]) ;
ArrayWheelAdapter adapter = new ArrayWheelAdapter<String>(getContext(), arr);
wheelVerticalView.setViewAdapter(adapter);
wheelVerticalView.setCurrentItem(builder.currentItem);
if(!TextUtils.isEmpty(builder.title)){
titleTextView.setText(builder.title);
}
}
public interface OnSelectListener{
public void onSelect(int index, String name);
}
public static Builder from(Context context){
return new Builder(context);
}
public static class Builder {
private String title;
private List<String> stringList;
private int currentItem;
private String currentItemName;
private Context context;
private OnSelectListener onSelectListener;
public Builder(Context context) {
this.context = context;
}
public Builder setTitle(String title) {
this.title = title;
return this;
}
public Builder setStringList(List<String> stringList) {
this.stringList = stringList;
return this;
}
public Builder setOnSelectListener(OnSelectListener onSelectListener) {
this.onSelectListener = onSelectListener;
return this;
}
public Builder setCurrentItem(int currentItem) {
this.currentItem = currentItem;
return this;
}
public Builder setCurrentItem(String stringName) {
this.currentItemName = stringName;
return this;
}
public void show(){
if(!TextUtils.isEmpty(currentItemName)){
int index = stringList.indexOf(currentItemName);
if(index > 0){
currentItem = index;
}
}
Dialog dialog = new SpinnerDialog(context, R.style.dialog, this);
dialog.show();
}
}
}