package cn.qqtheme.framework.picker;
import android.app.Activity;
import android.support.annotation.NonNull;
import android.text.TextUtils;
import android.view.Gravity;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
import cn.qqtheme.framework.widget.WheelView;
/**
* 双项选择器,选择两项,数据不联动。
* <p/>
* Author:李玉江[QQ:1032694760]
* DateTime:2017/5/1 8:34
* Builder:Android Studio
*/
public class DoublePicker extends WheelPicker {
private List<String> firstData = new ArrayList<>();
private List<String> secondData = new ArrayList<>();
private int selectedFirstIndex = 0;
private int selectedSecondIndex = 0;
private OnWheelListener onWheelListener;
private OnPickListener onPickListener;
private CharSequence firstPrefixLabel, firstSuffixLabel;
private CharSequence secondPrefixLabel, secondSuffixLabel;
public DoublePicker(Activity activity, List<String> firstData, List<String> secondData) {
super(activity);
this.firstData = firstData;
this.secondData = secondData;
}
public void setSelectedIndex(int firstIndex, int secondIndex) {
if (firstIndex >= 0 && firstIndex < firstData.size()) {
selectedFirstIndex = firstIndex;
}
if (secondIndex >= 0 && secondIndex < secondData.size()) {
selectedSecondIndex = secondIndex;
}
}
public void setFirstLabel(CharSequence firstPrefixLabel, CharSequence firstSuffixLabel) {
this.firstPrefixLabel = firstPrefixLabel;
this.firstSuffixLabel = firstSuffixLabel;
}
public void setSecondLabel(CharSequence secondPrefixLabel, CharSequence secondSuffixLabel) {
this.secondPrefixLabel = secondPrefixLabel;
this.secondSuffixLabel = secondSuffixLabel;
}
public String getSelectedFirstItem() {
if (firstData.size() > selectedFirstIndex) {
return firstData.get(selectedFirstIndex);
}
return "";
}
public String getSelectedSecondItem() {
if (secondData.size() > selectedSecondIndex) {
return secondData.get(selectedSecondIndex);
}
return "";
}
@NonNull
@Override
protected View makeCenterView() {
LinearLayout layout = new LinearLayout(activity);
layout.setOrientation(LinearLayout.HORIZONTAL);
layout.setGravity(Gravity.CENTER);
if (!TextUtils.isEmpty(firstPrefixLabel)) {
TextView firstPrefixLabelView = createLabelView();
firstPrefixLabelView.setLayoutParams(new LinearLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT));
firstPrefixLabelView.setText(firstPrefixLabel);
layout.addView(firstPrefixLabelView);
}
final WheelView firstView = createWheelView();
firstView.setLayoutParams(new LinearLayout.LayoutParams(0, WRAP_CONTENT, 1.0f));
layout.addView(firstView);
if (!TextUtils.isEmpty(firstSuffixLabel)) {
TextView firstSuffixLabelView = createLabelView();
firstSuffixLabelView.setLayoutParams(new LinearLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT));
firstSuffixLabelView.setText(firstSuffixLabel);
layout.addView(firstSuffixLabelView);
}
if (!TextUtils.isEmpty(secondPrefixLabel)) {
TextView secondPrefixLabelView = createLabelView();
secondPrefixLabelView.setLayoutParams(new LinearLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT));
secondPrefixLabelView.setText(secondPrefixLabel);
layout.addView(secondPrefixLabelView);
}
final WheelView secondView = createWheelView();
secondView.setLayoutParams(new LinearLayout.LayoutParams(0, WRAP_CONTENT, 1.0f));
layout.addView(secondView);
if (!TextUtils.isEmpty(secondSuffixLabel)) {
TextView secondSuffixLabelView = createLabelView();
secondSuffixLabelView.setLayoutParams(new LinearLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT));
secondSuffixLabelView.setText(secondSuffixLabel);
layout.addView(secondSuffixLabelView);
}
firstView.setItems(firstData, selectedFirstIndex);
firstView.setOnItemSelectListener(new WheelView.OnItemSelectListener() {
@Override
public void onSelected(int index) {
selectedFirstIndex = index;
if (onWheelListener != null) {
onWheelListener.onFirstWheeled(selectedFirstIndex, firstData.get(selectedFirstIndex));
}
}
});
secondView.setItems(secondData, selectedSecondIndex);
secondView.setOnItemSelectListener(new WheelView.OnItemSelectListener() {
@Override
public void onSelected(int index) {
selectedSecondIndex = index;
if (onWheelListener != null) {
onWheelListener.onSecondWheeled(selectedSecondIndex, secondData.get(selectedSecondIndex));
}
}
});
return layout;
}
@Override
public void onSubmit() {
if (onPickListener != null) {
onPickListener.onPicked(selectedFirstIndex, selectedSecondIndex);
}
}
public void setOnWheelListener(OnWheelListener onWheelListener) {
this.onWheelListener = onWheelListener;
}
public void setOnPickListener(OnPickListener onPickListener) {
this.onPickListener = onPickListener;
}
/**
* 数据条目滑动监听器
*/
public interface OnWheelListener {
void onFirstWheeled(int index, String item);
void onSecondWheeled(int index, String item);
}
/**
* 数据选择完成监听器
*/
public interface OnPickListener {
void onPicked(int selectedFirstIndex, int selectedSecondIndex);
}
}