/
MultiplePicker.java
90 lines (77 loc) · 2.83 KB
/
MultiplePicker.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package cn.qqtheme.framework.picker;
import android.app.Activity;
import android.support.annotation.NonNull;
import android.view.Gravity;
import android.widget.CheckBox;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import cn.qqtheme.framework.popup.ConfirmPopup;
/**
* 多项选择器
*
* @author 李玉江[QQ:1032694760]
* @since 2017/06/24
*/
public class MultiplePicker extends ConfirmPopup<ScrollView> {
private List<String> items = new ArrayList<>();
private LinearLayout layout;
private OnItemPickListener onItemPickListener;
public MultiplePicker(Activity activity, String[] items) {
this(activity, Arrays.asList(items));
}
public MultiplePicker(Activity activity, List<String> items) {
super(activity);
this.items = items;
}
public void setOnItemPickListener(OnItemPickListener onItemPickListener) {
this.onItemPickListener = onItemPickListener;
}
@NonNull
@Override
protected ScrollView makeCenterView() {
ScrollView scrollView = new ScrollView(activity);
layout = new LinearLayout(activity);
layout.setOrientation(LinearLayout.VERTICAL);
for (String item : items) {
LinearLayout line = new LinearLayout(activity);
line.setOrientation(LinearLayout.HORIZONTAL);
line.setGravity(Gravity.CENTER);
TextView textView = new TextView(activity);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(0, WRAP_CONTENT, 1.0f);
lp.gravity = Gravity.CENTER;
textView.setLayoutParams(lp);
textView.setText(item);
textView.setGravity(Gravity.CENTER);
line.addView(textView);
CheckBox checkBox = new CheckBox(activity);
checkBox.setLayoutParams(new LinearLayout.LayoutParams(0, WRAP_CONTENT, 0.4f));
line.addView(checkBox);
layout.addView(line);
}
scrollView.addView(layout);
return scrollView;
}
@Override
protected void onSubmit() {
if (onItemPickListener == null) {
return;
}
List<String> checked = new ArrayList<>();
for (int i = 0, count = layout.getChildCount(); i < count; i++) {
LinearLayout line = (LinearLayout) layout.getChildAt(i);
CheckBox checkBox = (CheckBox) line.getChildAt(1);
if (checkBox.isChecked()) {
TextView textView = (TextView) line.getChildAt(0);
checked.add(textView.getText().toString());
}
}
onItemPickListener.onItemPicked(checked.size(), checked);
}
public interface OnItemPickListener {
void onItemPicked(int count, List<String> items);
}
}