Skip to content

Commit a1adc8c

Browse files
committed
1.车场车型选择添加可以设置选择类型和已选择item选中的功能
1.承运商选择添加可以设置选择类型和已选择item选中的功能
1 parent bc8d2b2 commit a1adc8c

6 files changed

Lines changed: 93 additions & 38 deletions

File tree

app/src/main/java/com/tick/conditiondialogdemo/MainActivity.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import android.widget.Button;
66
import android.widget.TextView;
77

8+
import com.tick.conditiondialog.ConditionDialogAdapter;
89
import com.tick.conditiondialog.carrier.CarrierType;
910
import com.tick.conditiondialog.carrier.CarrierTypeCdSelector;
1011
import com.tick.conditiondialog.carrier.CarrierTypeSelectListener;
@@ -39,8 +40,12 @@ public class MainActivity extends AppCompatActivity implements VehicleConditionS
3940
protected void onCreate(Bundle savedInstanceState) {
4041
super.onCreate(savedInstanceState);
4142
setContentView(R.layout.activity_main);
43+
List<String> list = new ArrayList<>();
44+
list.add("平板车3");
45+
list.add("平板车7");
4246

43-
mVehicleCdSelector = new VehicleCdSelector(getApplicationContext(), mock(), this);
47+
mVehicleCdSelector = new VehicleCdSelector(getApplicationContext(), mock(), this, ConditionDialogAdapter
48+
.TYPE_MULTIPLY, list, ConditionDialogAdapter.TYPE_SINGLE, new ArrayList<>());
4449
mVehicleCdSelector.setAnimationStyle(R.style.popwin_anim_style);
4550

4651
mVehicleTypeSelector = new VehicleTypeSelector(getApplicationContext(), mockTypes(), vehicleTypes -> {
@@ -53,7 +58,7 @@ protected void onCreate(Bundle savedInstanceState) {
5358
}
5459
mSelectedType = result.toString();
5560
mTextView.setText(mSelectedType);
56-
});
61+
}, ConditionDialogAdapter.TYPE_MULTIPLY, list);
5762
mVehicleTypeSelector.setAnimationStyle(R.style.popwin_anim_style);
5863

5964
mVehicleMeterSelector = new VehicleMeterSelector(getApplicationContext(), mockMeters(), vehicleMeters -> {
@@ -69,7 +74,11 @@ protected void onCreate(Bundle savedInstanceState) {
6974
});
7075
mVehicleMeterSelector.setAnimationStyle(R.style.popwin_anim_style);
7176

72-
mTypeCdSelector = new CarrierTypeCdSelector(getApplicationContext(), mockCarrierType(), this);
77+
List<String> carrierList = new ArrayList<>();
78+
carrierList.add("车队");
79+
carrierList.add("平板车7");
80+
mTypeCdSelector = new CarrierTypeCdSelector(getApplicationContext(), mockCarrierType(), this,
81+
ConditionDialogAdapter.TYPE_MULTIPLY, carrierList);
7382
mTypeCdSelector.setAnimationStyle(R.style.popwin_anim_style);
7483

7584
mTextView = findViewById(R.id.tv_content);

conditiondialog/src/main/java/com/tick/conditiondialog/ConditionDialogAdapter.java

Lines changed: 8 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ public class ConditionDialogAdapter<T extends ConditionEntity> extends BaseAdapt
2727
public static final int TYPE_MULTIPLY = 1;
2828

2929
private ArrayList<T> mConditions;
30-
private ArrayList<T> mSelectChilds = new ArrayList<>();
3130
private Context mContext;
3231
private int mType;
3332

@@ -39,12 +38,6 @@ public ConditionDialogAdapter(Context context, ArrayList<T> conditions, int type
3938
mContext = context;
4039
mConditions = conditions == null ? new ArrayList<>() : conditions;
4140
mType = type;
42-
mSelectChilds.clear();
43-
for (T entity : mConditions) {
44-
if (entity.isCheck()) {
45-
mSelectChilds.add(entity);
46-
}
47-
}
4841
}
4942

5043
@Override
@@ -86,18 +79,16 @@ class ViewHolder {
8679
}
8780

8881
public void reset() {
89-
mSelectChilds.clear();
9082
for (ConditionEntity entity : mConditions) {
9183
entity.setCheck(false);
9284
}
9385
notifyDataSetChanged();
9486
}
9587

9688
private void clearCheck() {
97-
for (ConditionEntity entity : mSelectChilds) {
89+
for (ConditionEntity entity : mConditions) {
9890
entity.setCheck(false);
9991
}
100-
mSelectChilds.clear();
10192
}
10293

10394
public final void onCheckItemClick(int position) {
@@ -108,16 +99,6 @@ public final void onCheckItemClick(int position) {
10899
if (TYPE_SINGLE == mType) {
109100
//单选模式
110101
clearCheck();
111-
if (!entity.isCheck()) {
112-
mSelectChilds.add(entity);
113-
}
114-
} else {
115-
//多选模式
116-
if (!entity.isCheck()) {
117-
mSelectChilds.add(entity);
118-
} else {
119-
mSelectChilds.remove(entity);
120-
}
121102
}
122103
entity.setCheck(!entity.isCheck());
123104
notifyDataSetChanged();
@@ -139,7 +120,6 @@ public final void setItemClicked(String[] args) {
139120
for (T t : mConditions) {
140121
if (selected.equals(t.getValue())) {
141122
t.setCheck(true);
142-
mSelectChilds.add(t);
143123
break;
144124
}
145125
}
@@ -150,16 +130,20 @@ public final void setItemClicked(String[] args) {
150130
for (T t : mConditions) {
151131
if (select.equals(t.getValue())) {
152132
t.setCheck(true);
153-
mSelectChilds.add(t);
154133
}
155134
}
156135
}
157136
}
158137
notifyDataSetChanged();
159138
}
160139

161-
162140
public ArrayList<T> getSelectChilds() {
163-
return mSelectChilds;
141+
ArrayList<T> list = new ArrayList<>();
142+
for (T t : mConditions) {
143+
if (t.isCheck()) {
144+
list.add(t);
145+
}
146+
}
147+
return list;
164148
}
165149
}

conditiondialog/src/main/java/com/tick/conditiondialog/carrier/CarrierTypeCdSelector.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.tick.conditiondialog.carrier;
22

33
import android.content.Context;
4+
import android.support.annotation.NonNull;
45
import android.support.v4.content.ContextCompat;
56
import android.text.TextUtils;
67
import android.util.DisplayMetrics;
@@ -28,15 +29,23 @@ public class CarrierTypeCdSelector extends PopupWindow {
2829
private ConditionDialogAdapter<CarrierType> mTypeAdapter;
2930
private View mTop;
3031

31-
public CarrierTypeCdSelector(Context context, List<CarrierType> carrierTypes, CarrierTypeSelectListener listener) {
32+
public CarrierTypeCdSelector(Context context, List<CarrierType> carrierTypes, CarrierTypeSelectListener listener,
33+
int type, @NonNull List<String> selectCarrierTypes) {
3234
mListener = listener;
3335
try {
3436
if (carrierTypes == null) {
3537
return;
3638
}
3739
ArrayList<CarrierType> list = new ArrayList<>();
3840
for (CarrierType carrierType : carrierTypes) {
39-
list.add(carrierType.clone());
41+
CarrierType entity = carrierType.clone();
42+
list.add(entity);
43+
for (String str : selectCarrierTypes) {
44+
if (!TextUtils.isEmpty(str) && str.equals(entity.getValue())) {
45+
entity.setCheck(true);
46+
break;
47+
}
48+
}
4049
}
4150
View container = LayoutInflater.from(context).inflate(R.layout.carrier_type_condition_popwindow_layout,
4251
null, false);
@@ -46,7 +55,7 @@ public CarrierTypeCdSelector(Context context, List<CarrierType> carrierTypes, Ca
4655
TextView tvSure = container.findViewById(R.id.tv_sure);
4756
GridView meterGridView = container.findViewById(R.id.gv_condition);
4857
title.setText("承运商类型");
49-
mTypeAdapter = new ConditionDialogAdapter<>(context, list, ConditionDialogAdapter.TYPE_MULTIPLY);
58+
mTypeAdapter = new ConditionDialogAdapter<>(context, list, type);
5059
meterGridView.setAdapter(mTypeAdapter);
5160
meterGridView.setOnItemClickListener((parent, view, position, id) -> mTypeAdapter.onCheckItemClick
5261
(position));
@@ -80,6 +89,10 @@ public CarrierTypeCdSelector(Context context, List<CarrierType> carrierTypes, Ca
8089
}
8190
}
8291

92+
public CarrierTypeCdSelector(Context context, List<CarrierType> carrierTypes, CarrierTypeSelectListener listener) {
93+
this(context, carrierTypes, listener, ConditionDialogAdapter.TYPE_MULTIPLY, new ArrayList<>());
94+
}
95+
8396
public void show(View v) {
8497
showAtLocation(v, Gravity.TOP, 0, 0);
8598
mTop.animate().alpha(1f).setDuration(100).setStartDelay(600);

conditiondialog/src/main/java/com/tick/conditiondialog/vehicle/VehicleCdSelector.java

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package com.tick.conditiondialog.vehicle;
22

33
import android.content.Context;
4+
import android.support.annotation.NonNull;
45
import android.support.v4.content.ContextCompat;
6+
import android.text.TextUtils;
57
import android.util.DisplayMetrics;
68
import android.view.Gravity;
79
import android.view.LayoutInflater;
@@ -14,6 +16,9 @@
1416
import com.tick.conditiondialog.R;
1517
import com.tick.conditiondialog.ViewUtil;
1618

19+
import java.util.ArrayList;
20+
import java.util.List;
21+
1722
/**
1823
* 车辆条件选择器
1924
* Created by wangcheng on 2017/11/13.
@@ -26,7 +31,8 @@ public class VehicleCdSelector extends PopupWindow {
2631
private View mTop;
2732

2833
public VehicleCdSelector(Context context, VehicleCondition vehicleCondition, VehicleConditionSelectListener
29-
listener) {
34+
listener, int vehicleTypeType, @NonNull List<String> selectVehicleTypes, int vehicleMeterType, @NonNull
35+
List<String> selectVehicleMeters) {
3036
mListener = listener;
3137
VehicleCondition condition = vehicleCondition.cloneCondition();
3238
View container = LayoutInflater.from(context).inflate(R.layout.vehicel_condition_popwindow_layout, null, false);
@@ -36,13 +42,28 @@ public VehicleCdSelector(Context context, VehicleCondition vehicleCondition, Veh
3642
TextView tvSure = container.findViewById(R.id.tv_sure);
3743

3844
GridView meterGridView = container.findViewById(R.id.gv_vehicle_meter);
39-
mMeterAdapter = new ConditionDialogAdapter<>(context, condition.getVehicleMeters());
45+
for (String str : selectVehicleMeters) {
46+
for (VehicleMeter vehicleMeter : condition.getVehicleMeters()) {
47+
if (!TextUtils.isEmpty(str) && str.equals(vehicleMeter.getValue())) {
48+
vehicleMeter.setCheck(true);
49+
break;
50+
}
51+
}
52+
}
53+
mMeterAdapter = new ConditionDialogAdapter<>(context, condition.getVehicleMeters(), vehicleMeterType);
4054
meterGridView.setAdapter(mMeterAdapter);
4155
meterGridView.setOnItemClickListener((parent, view, position, id) -> mMeterAdapter.onCheckItemClick(position));
4256

4357
GridView typeGridView = container.findViewById(R.id.gv_vehicle_type);
44-
mTypeAdapter = new ConditionDialogAdapter<>(context, condition.getVehicleTypes(), ConditionDialogAdapter
45-
.TYPE_MULTIPLY);
58+
for (String str : selectVehicleTypes) {
59+
for (VehicleType vehicleType : condition.getVehicleTypes()) {
60+
if (!TextUtils.isEmpty(str) && str.equals(vehicleType.getValue())) {
61+
vehicleType.setCheck(true);
62+
break;
63+
}
64+
}
65+
}
66+
mTypeAdapter = new ConditionDialogAdapter<>(context, condition.getVehicleTypes(), vehicleTypeType);
4667
typeGridView.setAdapter(mTypeAdapter);
4768
typeGridView.setOnItemClickListener(((parent, view, position, id) -> mTypeAdapter.onCheckItemClick(position)));
4869

@@ -65,6 +86,12 @@ public VehicleCdSelector(Context context, VehicleCondition vehicleCondition, Veh
6586
setFocusable(true);
6687
}
6788

89+
public VehicleCdSelector(Context context, VehicleCondition vehicleCondition, VehicleConditionSelectListener
90+
listener) {
91+
this(context, vehicleCondition, listener, ConditionDialogAdapter.TYPE_MULTIPLY, new ArrayList<>(),
92+
ConditionDialogAdapter.TYPE_SINGLE, new ArrayList<>());
93+
}
94+
6895
public void show(View v) {
6996
showAtLocation(v, Gravity.TOP, 0, 0);
7097
mTop.animate().alpha(1f).setDuration(100).setStartDelay(600);

conditiondialog/src/main/java/com/tick/conditiondialog/vehicle/VehicleMeterSelector.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package com.tick.conditiondialog.vehicle;
22

33
import android.content.Context;
4+
import android.support.annotation.NonNull;
45
import android.support.v4.content.ContextCompat;
6+
import android.text.TextUtils;
57
import android.util.DisplayMetrics;
68
import android.view.Gravity;
79
import android.view.LayoutInflater;
@@ -15,6 +17,7 @@
1517
import com.tick.conditiondialog.ViewUtil;
1618

1719
import java.util.ArrayList;
20+
import java.util.List;
1821

1922
/**
2023
* 车长选择器
@@ -27,7 +30,7 @@ public class VehicleMeterSelector extends PopupWindow {
2730
private View mTop;
2831

2932
public VehicleMeterSelector(Context context, ArrayList<VehicleMeter> vehicleMeters, VehicleMetersSelectListener
30-
listener, int type) {
33+
listener, int type, @NonNull List<String> selectVehicleMeters) {
3134
mListener = listener;
3235
View container = LayoutInflater.from(context).inflate(R.layout.vehicle_meter_condition_popwindow_layout,
3336
null, false);
@@ -38,6 +41,14 @@ public VehicleMeterSelector(Context context, ArrayList<VehicleMeter> vehicleMete
3841

3942
title.setText("车长");
4043
GridView meterGridView = container.findViewById(R.id.gv_condition);
44+
for (String str : selectVehicleMeters) {
45+
for (VehicleMeter vehicleMeter : vehicleMeters) {
46+
if (!TextUtils.isEmpty(str) && str.equals(vehicleMeter.getValue())) {
47+
vehicleMeter.setCheck(true);
48+
break;
49+
}
50+
}
51+
}
4152
mMeterAdapter = new ConditionDialogAdapter<>(context, vehicleMeters, type);
4253
meterGridView.setAdapter(mMeterAdapter);
4354
meterGridView.setOnItemClickListener((parent, view, position, id) -> mMeterAdapter.onCheckItemClick(position));
@@ -62,7 +73,7 @@ public VehicleMeterSelector(Context context, ArrayList<VehicleMeter> vehicleMete
6273

6374
public VehicleMeterSelector(Context context, ArrayList<VehicleMeter> vehicleMeters, VehicleMetersSelectListener
6475
listener) {
65-
this(context, vehicleMeters, listener, ConditionDialogAdapter.TYPE_MULTIPLY);
76+
this(context, vehicleMeters, listener, ConditionDialogAdapter.TYPE_MULTIPLY, new ArrayList<>());
6677
}
6778

6879
public void show(View v) {

conditiondialog/src/main/java/com/tick/conditiondialog/vehicle/VehicleTypeSelector.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package com.tick.conditiondialog.vehicle;
22

33
import android.content.Context;
4+
import android.support.annotation.NonNull;
45
import android.support.v4.content.ContextCompat;
6+
import android.text.TextUtils;
57
import android.util.DisplayMetrics;
68
import android.view.Gravity;
79
import android.view.LayoutInflater;
@@ -15,6 +17,7 @@
1517
import com.tick.conditiondialog.ViewUtil;
1618

1719
import java.util.ArrayList;
20+
import java.util.List;
1821

1922
/**
2023
* 车辆条件选择器
@@ -27,7 +30,7 @@ public class VehicleTypeSelector extends PopupWindow {
2730
private View mTop;
2831

2932
public VehicleTypeSelector(Context context, ArrayList<VehicleType> vehicleTypes, VehicleTypeSelectListener
30-
listener, int type) {
33+
listener, int type, @NonNull List<String> selectVehicleTypes) {
3134
mListener = listener;
3235
View container = LayoutInflater.from(context).inflate(R.layout.vehicle_type_condition_popwindow_layout, null,
3336
false);
@@ -38,6 +41,14 @@ public VehicleTypeSelector(Context context, ArrayList<VehicleType> vehicleTypes,
3841

3942
title.setText("车型");
4043
GridView typeGridView = container.findViewById(R.id.gv_condition);
44+
for (String str : selectVehicleTypes) {
45+
for (VehicleType vehicleType : vehicleTypes) {
46+
if (!TextUtils.isEmpty(str) && str.equals(vehicleType.getValue())) {
47+
vehicleType.setCheck(true);
48+
break;
49+
}
50+
}
51+
}
4152
mTypeAdapter = new ConditionDialogAdapter<>(context, vehicleTypes, type);
4253
typeGridView.setAdapter(mTypeAdapter);
4354
typeGridView.setOnItemClickListener(((parent, view, position, id) -> mTypeAdapter.onCheckItemClick(position)));
@@ -62,7 +73,7 @@ public VehicleTypeSelector(Context context, ArrayList<VehicleType> vehicleTypes,
6273

6374
public VehicleTypeSelector(Context context, ArrayList<VehicleType> vehicleTypes, VehicleTypeSelectListener
6475
listener) {
65-
this(context, vehicleTypes, listener, ConditionDialogAdapter.TYPE_MULTIPLY);
76+
this(context, vehicleTypes, listener, ConditionDialogAdapter.TYPE_MULTIPLY, new ArrayList<>());
6677
}
6778

6879
public void show(View v) {

0 commit comments

Comments
 (0)