Sfoglia il codice sorgente

搜索功能开发完成

huyuguo 4 anni fa
parent
commit
d7c92074bd

+ 8 - 7
app/src/main/AndroidManifest.xml

@ -4,14 +4,14 @@
4 4
    package="com.electric.chargingpile"
5 5
    android:versionCode="92"
6 6
    android:versionName="3.5.4">
7
7 8
    <uses-permission android:name="android.permission.BLUETOOTH" />
8 9
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
9
10
    <!-- If your app targets Android 9 or lower, you can declare
11
         ACCESS_COARSE_LOCATION instead. -->
12
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
13
14
    <!-- 往SDCard写入数据权限 -->
10
    <!--
11
 If your app targets Android 9 or lower, you can declare
12
         ACCESS_COARSE_LOCATION instead.
13
    -->
14
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- 往SDCard写入数据权限 -->
15 15
    <permission
16 16
        android:name="${applicationId}.permission.JPUSH_MESSAGE"
17 17
        android:protectionLevel="signature" />
@ -71,7 +71,8 @@
71 71
        android:resizeableActivity="true"
72 72
        android:theme="@style/AppTheme"
73 73
        tools:ignore="LockedOrientationActivity">
74
        <activity android:name=".activity.ShareTwoPictureActivity"></activity>
74
        <activity android:name=".activity.SearchAllActivity"></activity>
75
        <activity android:name=".activity.ShareTwoPictureActivity" />
75 76
        <activity
76 77
            android:name=".activity.RecommendChargingStationActivity"
77 78
            android:screenOrientation="portrait" />

+ 47 - 2
app/src/main/java/com/electric/chargingpile/activity/MainMapActivity.java

@ -1608,6 +1608,12 @@ public class MainMapActivity extends Activity implements LocationSource, AMapLoc
1608 1608
    }
1609 1609
1610 1610
1611
    @Override
1612
    protected void onNewIntent(Intent intent) {
1613
        super.onNewIntent(intent);
1614
        setIntent(intent);
1615
    }
1616
1611 1617
    /**
1612 1618
     * 方法必须重写
1613 1619
     */
@ -1615,6 +1621,11 @@ public class MainMapActivity extends Activity implements LocationSource, AMapLoc
1615 1621
    protected void onResume() {
1616 1622
        super.onResume();
1617 1623
1624
        String from = getIntent().getStringExtra("from");
1625
        if ("search_all_activity".equals(from)) {
1626
            searchAll();
1627
        }
1628
1618 1629
        if (FindActivity.haveFindMessage == true) {
1619 1630
            iVpoint.setVisibility(View.VISIBLE);
1620 1631
        } else {
@ -1679,6 +1690,34 @@ public class MainMapActivity extends Activity implements LocationSource, AMapLoc
1679 1690
        changeButton();
1680 1691
    }
1681 1692
1693
    private void searchAll() {
1694
        double jing = Double.valueOf(getIntent().getStringExtra("jing"));
1695
        double wei = Double.valueOf(getIntent().getStringExtra("wei"));
1696
        MainApplication.search_jing = jing;
1697
        MainApplication.search_wei = wei;
1698
1699
        final LatLng screenCity = new LatLng(wei, jing);
1700
        aMap = mapView.getMap();
1701
        Util.setMapCustomStyleFile(aMap, getApplicationContext());
1702
        new Handler().postDelayed(new Runnable() {
1703
            @Override
1704
            public void run() {
1705
                aMap.moveCamera(CameraUpdateFactory.newLatLngZoom(screenCity, 14.0f));
1706
            }
1707
        }, 500);
1708
1709
        if (search_marker != null) {
1710
            search_marker.remove();
1711
        }
1712
1713
        if (MainApplication.search_jing != 0.0 && MainApplication.search_wei != 0.0) {
1714
            LatLng latLng = new LatLng(MainApplication.search_wei, MainApplication.search_jing);
1715
            search_marker = aMap.addMarker(new MarkerOptions().position(latLng).icon(BitmapDescriptorFactory.fromBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.icon_search_address))));
1716
            search_marker.setPeriod(8);
1717
        }
1718
        ete("{\"fun\":\"timer\"}");
1719
    }
1720
1682 1721
    /**
1683 1722
     * 方法必须重写
1684 1723
     */
@ -5118,8 +5157,14 @@ public class MainMapActivity extends Activity implements LocationSource, AMapLoc
5118 5157
5119 5158
            for (PileData.FenshiInfoBean bean : fenshiList) {
5120 5159
                if (bean.getStartTotalMinutes() > totalMinutes) {
5121
                    Double service_free = Double.valueOf(bean.getService_free());
5122
                    Double charge_free = Double.valueOf(bean.getCharge_free());
5160
                    double service_free = 0;
5161
                    double charge_free = 0;
5162
                    try {
5163
                        service_free = Double.valueOf(bean.getService_free());
5164
                        charge_free = Double.valueOf(bean.getCharge_free());
5165
                    } catch (Exception e) {
5166
                        e.printStackTrace();
5167
                    }
5123 5168
                    fenshi_info_textview.setText(String.format("%s开始 %.2f元/度", bean.getStart(), service_free + charge_free));
5124 5169
                    break;
5125 5170
                }

+ 8 - 2
app/src/main/java/com/electric/chargingpile/activity/RecommendChargingStationActivity.java

@ -605,8 +605,14 @@ public class RecommendChargingStationActivity extends AppCompatActivity implemen
605 605
606 606
                for (PileData.FenshiInfoBean bean : fenshiList) {
607 607
                    if (bean.getStartTotalMinutes() > totalMinutes) {
608
                        Double service_free = Double.valueOf(bean.getService_free());
609
                        Double charge_free = Double.valueOf(bean.getCharge_free());
608
                        double service_free = 0;
609
                        double charge_free = 0;
610
                        try {
611
                            service_free = Double.valueOf(bean.getService_free());
612
                            charge_free = Double.valueOf(bean.getCharge_free());
613
                        } catch (Exception e) {
614
                            e.printStackTrace();
615
                        }
610 616
                        holder.fenshi_info_textview.setText(String.format("%s开始 %.2f元/度", bean.getStart(), service_free + charge_free));
611 617
                        break;
612 618
                    }

+ 48 - 16
app/src/main/java/com/electric/chargingpile/activity/SearchActivity.java

@ -86,7 +86,8 @@ public class SearchActivity extends Activity implements OnClickListener, Inputti
86 86
    private HistoryInfo history;
87 87

88 88
    private List<RecommendZhan> pointList = new ArrayList<>();
89
    private List<RecommendZhan> pointFullList = new ArrayList<>();
89
    private List<RecommendZhan> pointAllList = new ArrayList<>();
90
    private String pointAllData = "";
90 91

91 92
    private Map<String, String> map;
92 93

@ -120,6 +121,9 @@ public class SearchActivity extends Activity implements OnClickListener, Inputti
120 121
    private void initView() {
121 122
        lvContent = (ListView) findViewById(R.id.lv_search_list);
122 123
        lvContent.setDividerHeight(0);
124
        adapter = new SearchAdapter(this, addressList, pointList);
125
        lvContent.setAdapter(adapter);
126

123 127
        historyList = (ListView) findViewById(R.id.lv_history_list);
124 128
        tvSearch = (TextView) findViewById(R.id.tv_search);
125 129
        tvSearch.setOnClickListener(this);
@ -164,8 +168,19 @@ public class SearchActivity extends Activity implements OnClickListener, Inputti
164 168
            public void onTextChanged(CharSequence s, int start, int before, int count) {
165 169
                if (TextUtils.isEmpty(s.toString().trim())) {
166 170
                    ivClear.setVisibility(View.GONE);
171
                    historyList.setVisibility(View.VISIBLE);
172
                    lvContent.setVisibility(View.GONE);
173
                    addressList.clear();
174
                    pointList.clear();
175
                    addressAllList.clear();
176
                    pointAllList.clear();
177
                    pointAllData = "";
178
                    adapter.notifyDataSetChanged();
179

167 180
                } else {
168 181
                    ivClear.setVisibility(View.VISIBLE);
182
                    lvContent.setVisibility(View.VISIBLE);
183
                    historyList.setVisibility(View.GONE);
169 184
                }
170 185
            }
171 186

@ -198,8 +213,6 @@ public class SearchActivity extends Activity implements OnClickListener, Inputti
198 213
                        doPointNameSearchQuery();
199 214
                        lvContent.setVisibility(View.VISIBLE);
200 215
                        historyList.setVisibility(View.GONE);
201

202
                        System.out.println("hello www");
203 216
                    }
204 217
                    return true;
205 218
                }
@ -254,8 +267,6 @@ public class SearchActivity extends Activity implements OnClickListener, Inputti
254 267

255 268
            }
256 269
        });
257
        adapter = new SearchAdapter(this, addressList, pointList);
258
        lvContent.setAdapter(adapter);
259 270

260 271
        // 点击历史记录
261 272
        historyList.setOnItemClickListener(new OnItemClickListener() {
@ -290,7 +301,6 @@ public class SearchActivity extends Activity implements OnClickListener, Inputti
290 301
                db.insert(values);
291 302

292 303
                Cursor c = db.query();
293
                System.err.println(c.getCount());
294 304
                if (c.getCount() <= 0) {
295 305
                    return;
296 306
                }
@ -435,6 +445,7 @@ public class SearchActivity extends Activity implements OnClickListener, Inputti
435 445
                    if (poisList != null && poisList.size() > 0) {
436 446
                        addressList.clear();
437 447
                        addressAllList.clear();
448

438 449
                        try {
439 450
                            for (int i = 0; i < poisList.size(); i++) {
440 451
                                map = new HashMap<String, String>();
@ -497,7 +508,7 @@ public class SearchActivity extends Activity implements OnClickListener, Inputti
497 508

498 509
        @Override
499 510
        public int getCount() {
500
            return list.size() + pointList.size();
511
            return list.size() + pList.size();
501 512
        }
502 513

503 514
        @Override
@ -611,8 +622,16 @@ public class SearchActivity extends Activity implements OnClickListener, Inputti
611 622
            viewHolder.query_all_addresses.setOnClickListener(new View.OnClickListener() {
612 623

613 624
                @Override
614
                public void onClick(View v) { // 查看所有
615
                    // TODO by hyg add
625
                public void onClick(View v) { // 全部目的地
626
                    Intent intent = new Intent();
627
                    intent.setClass(getApplicationContext(), SearchAllActivity.class);
628
                    Bundle bundle = new Bundle();
629
                    ArrayList arrayList = new ArrayList();
630
                    arrayList.add(addressAllList);
631
                    bundle.putParcelableArrayList("list", arrayList);
632
                    intent.putExtras(bundle);
633
                    intent.putExtra("title", "全部目的地");
634
                    startActivity(intent);
616 635
                }
617 636
            });
618 637
        }
@ -636,7 +655,7 @@ public class SearchActivity extends Activity implements OnClickListener, Inputti
636 655
                viewHolder.point_header_title.setVisibility(View.GONE);
637 656
            }
638 657

639
            if (position == list.size() + pList.size() - 1 && pointFullList.size() > 3) {
658
            if (position == list.size() + pList.size() - 1 && pointAllList.size() > 3) {
640 659
                viewHolder.query_all_points.setVisibility(View.VISIBLE);
641 660
            } else {
642 661
                viewHolder.query_all_points.setVisibility(View.GONE);
@ -645,6 +664,11 @@ public class SearchActivity extends Activity implements OnClickListener, Inputti
645 664
            viewHolder.query_all_points.setOnClickListener(new View.OnClickListener() {
646 665
                @Override
647 666
                public void onClick(View v) { // 查看全部站点
667
                    Intent intent = new Intent();
668
                    intent.setClass(getApplicationContext(), SearchAllActivity.class);
669
                    intent.putExtra("title", "全部站点");
670
                    intent.putExtra("data", pointAllData);
671
                    startActivity(intent);
648 672
                }
649 673
            });
650 674

@ -726,8 +750,14 @@ public class SearchActivity extends Activity implements OnClickListener, Inputti
726 750

727 751
                for (PileData.FenshiInfoBean bean : fenshiList) {
728 752
                    if (bean.getStartTotalMinutes() > totalMinutes) {
729
                        Double service_free = Double.valueOf(bean.getService_free());
730
                        Double charge_free = Double.valueOf(bean.getCharge_free());
753
                        double service_free = 0;
754
                        double charge_free = 0;
755
                        try {
756
                            service_free = Double.valueOf(bean.getService_free());
757
                            charge_free = Double.valueOf(bean.getCharge_free());
758
                        } catch (Exception e) {
759
                            e.printStackTrace();
760
                        }
731 761
                        viewHolder.fenshi_info_textview.setText(String.format("%s开始 %.2f元/度", bean.getStart(), service_free + charge_free));
732 762
                        break;
733 763
                    }
@ -849,7 +879,7 @@ public class SearchActivity extends Activity implements OnClickListener, Inputti
849 879
    protected void doSearchQuery() {
850 880
        currentPage = 0;
851 881
        query = new PoiSearch.Query(keyWord, "", MainApplication.atCity);// 第一个参数表示搜索字符串,第二个参数表示poi搜索类型,第三个参数表示poi搜索区域(空字符串代表全国)
852
        query.setPageSize(10);// 设置每页最多返回多少条poiitem
882
        query.setPageSize(30);// 设置每页最多返回多少条poiitem
853 883
        query.setPageNum(currentPage);// 设置查第一页
854 884

855 885
        poiSearch = new PoiSearch(this, query);
@ -887,11 +917,13 @@ public class SearchActivity extends Activity implements OnClickListener, Inputti
887 917
                        e.printStackTrace();
888 918
                    }
889 919
                    if (null != info_decode && !info_decode.equals("")) {
890
                        pointFullList.clear();
920
                        pointAllList.clear();
921
                        pointAllData = "";
891 922
                        pointList.clear();
892 923

893 924
                        List<RecommendZhan> list = JsonUtils.parseToObjectList(info_decode, RecommendZhan.class);
894 925
                        if (list != null) {
926
                            pointAllData = info_decode;
895 927
                            for (RecommendZhan point : list) {
896 928
                                String wei = point.getPoi_wei().trim();
897 929
                                String jing = point.getPoi_jing().trim();
@ -912,10 +944,10 @@ public class SearchActivity extends Activity implements OnClickListener, Inputti
912 944

913 945
                                double d = AMapUtils.calculateLineDistance(center, ll);
914 946
                                point.setDistance(Util.getDistance(d));
915
                                pointFullList.add(point);
947
                                pointAllList.add(point);
916 948
                            }
917 949

918
                            for (RecommendZhan point : pointFullList) {
950
                            for (RecommendZhan point : pointAllList) {
919 951
                                pointList.add(point);
920 952
                                if (pointList.size() >= 3) {
921 953
                                    break;

+ 567 - 0
app/src/main/java/com/electric/chargingpile/activity/SearchAllActivity.java

@ -0,0 +1,567 @@
1
package com.electric.chargingpile.activity;
2
3
import androidx.appcompat.app.AppCompatActivity;
4
5
import android.content.Context;
6
import android.content.Intent;
7
import android.content.pm.PackageInfo;
8
import android.content.pm.PackageManager;
9
import android.graphics.drawable.BitmapDrawable;
10
import android.os.Bundle;
11
import android.text.Html;
12
import android.view.Gravity;
13
import android.view.LayoutInflater;
14
import android.view.View;
15
import android.view.ViewGroup;
16
import android.widget.AdapterView;
17
import android.widget.BaseAdapter;
18
import android.widget.Button;
19
import android.widget.ImageView;
20
import android.widget.LinearLayout;
21
import android.widget.ListView;
22
import android.widget.PopupWindow;
23
import android.widget.TextView;
24
import android.widget.Toast;
25
26
import com.amap.api.maps.model.LatLng;
27
import com.electric.chargingpile.R;
28
import com.electric.chargingpile.application.MainApplication;
29
import com.electric.chargingpile.data.PileData;
30
import com.electric.chargingpile.data.RecommendZhan;
31
import com.electric.chargingpile.manager.ProfileManager;
32
import com.electric.chargingpile.util.JsonUtils;
33
34
import java.net.URISyntaxException;
35
import java.util.ArrayList;
36
import java.util.Calendar;
37
import java.util.HashMap;
38
import java.util.List;
39
import java.util.Map;
40
41
public class SearchAllActivity extends AppCompatActivity {
42
43
    private View popupWindowView;
44
    private PopupWindow popupWindow;
45
    private Button cancleButton;
46
    private TextView tvOne, tvTwo, tvThree;
47
    private Double bd_lon, bd_lat, bd_jing, bd_wei;
48
    private String gd_jing, gd_wei;
49
50
    @Override
51
    protected void onCreate(Bundle savedInstanceState) {
52
        super.onCreate(savedInstanceState);
53
        setContentView(R.layout.activity_search_all);
54
        initView();
55
    }
56
57
    private void initView() {
58
        String title = getIntent().getStringExtra("title");
59
        TextView iv_title = findViewById(R.id.iv_title);
60
        iv_title.setText(title);
61
62
        List<Map<String, String>> addressAllList;
63
        List<RecommendZhan> pointAllList;
64
        if ("全部目的地".equals(title)) {
65
            ArrayList arrayList = getIntent().getExtras().getParcelableArrayList("list");
66
            addressAllList = (List<Map<String, String>>) arrayList.get(0);
67
            pointAllList = new ArrayList<>();
68
        } else {
69
            addressAllList = new ArrayList<>();
70
            String data = getIntent().getStringExtra("data");
71
            pointAllList = JsonUtils.parseToObjectList(data, RecommendZhan.class);
72
        }
73
74
75
        ListView lv_search_list = findViewById(R.id.lv_search_list);
76
        lv_search_list.setDividerHeight(0);
77
78
        SearchAdapter searchAdapter = new SearchAdapter(this, addressAllList, pointAllList);
79
        lv_search_list.setAdapter(searchAdapter);
80
81
        lv_search_list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
82
            @Override
83
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
84
                Intent intent = new Intent();
85
                intent.setClass(getApplicationContext(), MainMapActivity.class);
86
                intent.putExtra("from", "search_all_activity");
87
                intent.putExtra("zhan_name", addressAllList.get(position).get("name"));
88
                intent.putExtra("jing", addressAllList.get(position).get("jing"));
89
                intent.putExtra("wei", addressAllList.get(position).get("wei"));
90
                ProfileManager.getInstance().setSearchAddress(getApplicationContext(), addressAllList.get(position).get("name"));
91
                startActivity(intent);
92
            }
93
        });
94
95
    }
96
97
    public class SearchAdapter extends BaseAdapter {
98
        private Context context;
99
        private List<Map<String, String>> aList;
100
        private List<RecommendZhan> pList;
101
102
        public SearchAdapter(Context context, List<Map<String, String>> list, List<RecommendZhan> pointList) {
103
            this.context = context;
104
            this.aList = list;
105
            this.pList = pointList;
106
        }
107
108
        @Override
109
        public int getCount() {
110
            return aList.size() + pList.size();
111
        }
112
113
        @Override
114
        public Object getItem(int position) {
115
116
            if (aList.size() == 0) {
117
                return pList.get(position);
118
            } else {
119
                return aList.get(position);
120
            }
121
        }
122
123
        @Override
124
        public long getItemId(int position) {
125
            return position;
126
        }
127
128
        @Override
129
        public View getView(int position, View convertView, ViewGroup parent) {
130
131
            ViewHolder viewHolder = null;
132
            if (convertView == null) {
133
                convertView = LayoutInflater.from(context).inflate(R.layout.item_search, null);
134
                viewHolder = new ViewHolder();
135
136
                viewHolder.address_item = convertView.findViewById(R.id.address_item);
137
                viewHolder.point_item = convertView.findViewById(R.id.point_item);
138
139
                viewHolder.name = convertView.findViewById(R.id.search_name);
140
                viewHolder.address = convertView.findViewById(R.id.search_address);
141
                viewHolder.address_header_title = convertView.findViewById(R.id.address_header_title);
142
                viewHolder.query_all_addresses = convertView.findViewById(R.id.query_all_addresses);
143
144
                viewHolder.point_header_title = convertView.findViewById(R.id.point_header_title);
145
                viewHolder.query_all_points = convertView.findViewById(R.id.query_all_points);
146
                viewHolder.zhan_name = convertView.findViewById(R.id.zhan_name);
147
                viewHolder.red_paper_bag = convertView.findViewById(R.id.red_paper_bag);
148
                viewHolder.score_img = convertView.findViewById(R.id.score_img);
149
                viewHolder.score_text = convertView.findViewById(R.id.score_text);
150
                viewHolder.distance = convertView.findViewById(R.id.distance);
151
                viewHolder.zongjia_container = convertView.findViewById(R.id.zongjia_container);
152
                viewHolder.zongjia = convertView.findViewById(R.id.zongjia);
153
                viewHolder.charge_record_cnt = convertView.findViewById(R.id.charge_record_cnt);
154
                viewHolder.comment_cnt = convertView.findViewById(R.id.comment_cnt);
155
                viewHolder.times_line = convertView.findViewById(R.id.times_line);
156
                viewHolder.fenshi_info_textview = convertView.findViewById(R.id.fenshi_info_textview);
157
                viewHolder.iv_label_public = convertView.findViewById(R.id.iv_label_public);
158
                viewHolder.iv_label_ground = convertView.findViewById(R.id.iv_label_ground);
159
                viewHolder.iv_label_free_park = convertView.findViewById(R.id.iv_label_free_park);
160
                viewHolder.payment_method = convertView.findViewById(R.id.payment_method);
161
                viewHolder.recommend_nav = convertView.findViewById(R.id.recommend_nav);
162
                viewHolder.window_tv_fast_free_label = convertView.findViewById(R.id.window_tv_fast_free_label);
163
                viewHolder.window_tv_fast_free_num = convertView.findViewById(R.id.window_tv_fast_free_num);
164
                viewHolder.window_tv_fast_total_num = convertView.findViewById(R.id.window_tv_fast_total_num);
165
                viewHolder.window_tv_slow_free_label = convertView.findViewById(R.id.window_tv_slow_free_label);
166
                viewHolder.window_tv_slow_free_num = convertView.findViewById(R.id.window_tv_slow_free_num);
167
                viewHolder.window_tv_slow_total_num = convertView.findViewById(R.id.window_tv_slow_total_num);
168
169
                convertView.setTag(viewHolder);
170
            } else {
171
                viewHolder = (ViewHolder) convertView.getTag();
172
            }
173
174
            if (aList.size() != 0) {
175
                showAddressView(viewHolder, aList.get(position), position);
176
            } else {
177
                RecommendZhan point = pList.get(position - aList.size());
178
                showPointView(viewHolder, point, position);
179
            }
180
181
            return convertView;
182
        }
183
184
        class ViewHolder {
185
            LinearLayout address_item, point_item, zongjia_container;
186
187
            TextView name, address, address_header_title, query_all_addresses;
188
189
            TextView point_header_title, query_all_points, zhan_name, score_text, distance, zongjia,
190
                    charge_record_cnt, comment_cnt, fenshi_info_textview, iv_label_public, iv_label_ground,
191
                    iv_label_free_park, payment_method, window_tv_fast_free_label, window_tv_fast_free_num, window_tv_fast_total_num,
192
                    window_tv_slow_free_label, window_tv_slow_free_num, window_tv_slow_total_num;
193
            ImageView red_paper_bag, score_img;
194
            View times_line;
195
            Button recommend_nav;
196
197
        }
198
199
        private void showAddressView(ViewHolder viewHolder, Map<String, String> item, int position) {
200
            viewHolder.address_item.setVisibility(View.VISIBLE);
201
            viewHolder.point_item.setVisibility(View.GONE);
202
            viewHolder.address_header_title.setVisibility(View.GONE);
203
204
            viewHolder.name.setText(item.get("name"));
205
            viewHolder.address.setText(item.get("address"));
206
            viewHolder.query_all_addresses.setVisibility(View.GONE);
207
        }
208
209
        private void showPointView(ViewHolder viewHolder, RecommendZhan point, int position) {
210
211
            viewHolder.point_item.setOnClickListener(new View.OnClickListener() {
212
                @Override
213
                public void onClick(View v) {
214
                    Intent intent = new Intent(getApplication(), NewZhanDetailsActivity.class);
215
                    intent.putExtra("zhan_id", point.getId());
216
                    startActivity(intent);
217
                }
218
            });
219
            viewHolder.address_item.setVisibility(View.GONE);
220
            viewHolder.point_item.setVisibility(View.VISIBLE);
221
            viewHolder.point_header_title.setVisibility(View.GONE);
222
            viewHolder.query_all_points.setVisibility(View.GONE);
223
            viewHolder.zhan_name.setText(point.getZhan_name());
224
225
            if ("1".equals(point.getOwn_pay())) {
226
                viewHolder.red_paper_bag.setVisibility(View.VISIBLE);
227
            } else {
228
                viewHolder.red_paper_bag.setVisibility(View.GONE);
229
            }
230
231
            viewHolder.red_paper_bag.setOnClickListener(new View.OnClickListener() {
232
                @Override
233
                public void onClick(View v) {
234
                    Intent intent_example = new Intent(getApplicationContext(), ExampleActivity.class);
235
                    intent_example.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
236
                    startActivity(intent_example);
237
                    overridePendingTransition(0, 0);
238
                }
239
            });
240
241
            showStarInfoView(viewHolder, point);
242
243
            if ("0m".equals(point.getDistance())) {
244
                viewHolder.distance.setText("未知");
245
            } else {
246
                viewHolder.distance.setText(point.getDistance());
247
            }
248
249
            if (point.getZongjia() == 0) {
250
                viewHolder.zongjia_container.setVisibility(View.GONE);
251
            } else {
252
                viewHolder.zongjia_container.setVisibility(View.VISIBLE);
253
                viewHolder.zongjia.setText(String.format("%.2f", point.getZongjia()));
254
            }
255
256
            if (point.getComment_cnt() == 0 || point.getCharge_record_cnt() == 0 && point.getComment_cnt() == 0) {
257
                viewHolder.times_line.setVisibility(View.GONE);
258
            } else {
259
                viewHolder.times_line.setVisibility(View.VISIBLE);
260
            }
261
262
            if (point.getCharge_record_cnt() == 0) {
263
                viewHolder.charge_record_cnt.setVisibility(View.GONE);
264
            } else {
265
                viewHolder.charge_record_cnt.setVisibility(View.VISIBLE);
266
267
                if (point.getCharge_record_cnt() < 1000) {
268
                    viewHolder.charge_record_cnt.setText(point.getCharge_record_cnt() + "次充电成功");
269
                } else if (point.getCharge_record_cnt() < 10000) {
270
                    viewHolder.charge_record_cnt.setText(point.getCharge_record_cnt() / 1000 + "k+次充电成功");
271
                } else {
272
                    viewHolder.charge_record_cnt.setText(point.getCharge_record_cnt() / 10000 + "w+次充电成功");
273
                }
274
275
            }
276
277
            if (point.getComment_cnt() == 0) {
278
                viewHolder.comment_cnt.setVisibility(View.GONE);
279
            } else {
280
                viewHolder.comment_cnt.setVisibility(View.VISIBLE);
281
                if (point.getComment_cnt() < 1000) {
282
                    viewHolder.comment_cnt.setText(point.getComment_cnt() + "次评论");
283
                } else if (point.getComment_cnt() < 10000) {
284
                    viewHolder.comment_cnt.setText(point.getComment_cnt() / 1000 + "k+次评论");
285
                } else {
286
                    viewHolder.comment_cnt.setText(point.getComment_cnt() / 10000 + "w+次评论");
287
                }
288
            }
289
290
            if ("1".equals(point.getFenshi_is())) {
291
                viewHolder.fenshi_info_textview.setText("");
292
                ArrayList<PileData.FenshiInfoBean> fenshiList = (ArrayList<PileData.FenshiInfoBean>) JsonUtils.parseToObjectList(point.getFenshi_info(), PileData.FenshiInfoBean.class);
293
                Calendar calendar = Calendar.getInstance();
294
                int hours = calendar.get(Calendar.HOUR_OF_DAY);
295
                int minutes = calendar.get(Calendar.MINUTE);
296
                int totalMinutes = hours * 60 + minutes;
297
298
                for (PileData.FenshiInfoBean bean : fenshiList) {
299
                    if (bean.getStartTotalMinutes() > totalMinutes) {
300
                        double service_free = 0;
301
                        double charge_free = 0;
302
                        try {
303
                            service_free = Double.valueOf(bean.getService_free());
304
                            charge_free = Double.valueOf(bean.getCharge_free());
305
                        } catch (Exception e) {
306
                            e.printStackTrace();
307
                        }
308
                        viewHolder.fenshi_info_textview.setText(String.format("%s开始 %.2f元/度", bean.getStart(), service_free + charge_free));
309
                        break;
310
                    }
311
                }
312
            } else {
313
                viewHolder.fenshi_info_textview.setText("");
314
            }
315
316
            viewHolder.iv_label_public.setText(point.getBelong_attribute());
317
            viewHolder.iv_label_ground.setText("0".equals(point.getPark_location()) ? "地下" : "地上");
318
            viewHolder.iv_label_free_park.setVisibility(point.getStop_cost().contains("免费") ? View.VISIBLE : View.GONE);
319
320
            if ("1".equals(point.getOwn_pay())) {
321
                viewHolder.payment_method.setText("可使用本APP扫码支付");
322
            } else {
323
                if ("".equals(point.getCharge_cost_way2())) {
324
                    viewHolder.payment_method.setText("暂无");
325
                } else {
326
                    viewHolder.payment_method.setText(point.getCharge_cost_way2());
327
                }
328
            }
329
330
            viewHolder.recommend_nav.setOnClickListener(new View.OnClickListener() {
331
                @Override
332
                public void onClick(View v) {
333
                    recommendNav(point);
334
                }
335
            });
336
337
            if (point.getFast_able_num() == null && point.getSlow_able_num() == null) {
338
                viewHolder.window_tv_fast_free_label.setVisibility(View.GONE);
339
                viewHolder.window_tv_fast_total_num.setVisibility(View.GONE);
340
341
                viewHolder.window_tv_slow_free_label.setVisibility(View.GONE);
342
                viewHolder.window_tv_slow_total_num.setVisibility(View.GONE);
343
344
                viewHolder.window_tv_fast_free_num.setText("".equals(point.getFast_num()) ? "0" : point.getFast_num());
345
                viewHolder.window_tv_slow_free_num.setText("".equals(point.getSlow_num()) ? "0" : point.getSlow_num());
346
            } else {
347
                viewHolder.window_tv_fast_free_label.setVisibility(View.VISIBLE);
348
                viewHolder.window_tv_fast_total_num.setVisibility(View.VISIBLE);
349
350
                viewHolder.window_tv_slow_free_label.setVisibility(View.VISIBLE);
351
                viewHolder.window_tv_slow_total_num.setVisibility(View.VISIBLE);
352
353
                viewHolder.window_tv_fast_free_num.setText(point.getFast_able_num());
354
                viewHolder.window_tv_slow_free_num.setText(point.getSlow_able_num());
355
                viewHolder.window_tv_fast_total_num.setText("".equals(point.getFast_num()) ? "0" : "/" + point.getFast_num());
356
                viewHolder.window_tv_slow_total_num.setText("".equals(point.getSlow_num()) ? "0" : "/" + point.getSlow_num());
357
            }
358
359
360
        }
361
362
        private void showStarInfoView(ViewHolder viewHolder, RecommendZhan point) {
363
            String starStr = point.getStar();
364
            double star = 0.0;
365
            try {
366
                star = Double.parseDouble(starStr);
367
            } catch (NumberFormatException e) {
368
                e.printStackTrace();
369
            }
370
371
            viewHolder.score_text.setText(String.format("%.1f分", star));
372
            if (star == 0) {
373
                viewHolder.score_img.setImageDrawable(getDrawable(R.drawable.icon_0xing));
374
                viewHolder.score_text.setText("暂无评分");
375
            } else if (star > 0 && star < 1) {
376
                viewHolder.score_img.setImageDrawable(getDrawable(R.drawable.icon_05xing));
377
            } else if (star >= 1 && star < 1.5) {
378
                viewHolder.score_img.setImageDrawable(getDrawable(R.drawable.icon_1xing));
379
            } else if (star >= 1.5 && star < 2) {
380
                viewHolder.score_img.setImageDrawable(getDrawable(R.drawable.icon_15xing));
381
            } else if (star >= 2 && star < 2.5) {
382
                viewHolder.score_img.setImageDrawable(getDrawable(R.drawable.icon_2xing));
383
            } else if (star >= 2.5 && star < 3) {
384
                viewHolder.score_img.setImageDrawable(getDrawable(R.drawable.icon_25xing));
385
            } else if (star >= 3 && star < 3.5) {
386
                viewHolder.score_img.setImageDrawable(getDrawable(R.drawable.icon_3xing));
387
            } else if (star >= 3.5 && star < 4) {
388
                viewHolder.score_img.setImageDrawable(getDrawable(R.drawable.icon_35xing));
389
            } else if (star >= 4 && star < 4.5) {
390
                viewHolder.score_img.setImageDrawable(getDrawable(R.drawable.icon_4xing));
391
            } else if (star >= 4.5 && star < 5) {
392
                viewHolder.score_img.setImageDrawable(getDrawable(R.drawable.icon_45xing));
393
            } else {
394
                viewHolder.score_img.setImageDrawable(getDrawable(R.drawable.icon_5xing));
395
            }
396
        }
397
    }
398
399
    private void getGaode(Double jing, Double wei) {
400
        double x_pi = 3.14159265358979324 * 3000.0 / 180.0;
401
        double gg_lon;
402
        double gg_lat;
403
        double x = jing - 0.0065, y = wei - 0.006;
404
        double z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi);
405
        double theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi);
406
        gg_lon = z * Math.cos(theta);
407
        gd_jing = String.valueOf(gg_lon);
408
        gg_lat = z * Math.sin(theta);
409
        gd_wei = String.valueOf(gg_lat);
410
    }
411
412
    private void recommendNav(RecommendZhan rz) {
413
414
        String wei = rz.getPoi_wei().trim();
415
        String jing = rz.getPoi_jing().trim();
416
        int position_jing = jing.length() - jing.indexOf(".") - 1;
417
        int position_wei = wei.length() - wei.indexOf(".") - 1;
418
        final LatLng ll;
419
        if (position_jing > 13 || position_wei > 13) {
420
            ll = new LatLng(Double.parseDouble(wei), Double.parseDouble(jing));
421
        } else {
422
            double dwei = Double.parseDouble(wei);
423
            double djing = Double.parseDouble(jing);
424
            getGaode(djing, dwei);
425
            ll = new LatLng(Double.parseDouble(gd_wei), Double.parseDouble(gd_jing));
426
        }
427
428
        if (!isAvilible(getApplicationContext(), "com.baidu.BaiduMap") &&
429
                !isAvilible(getApplicationContext(), "com.autonavi.minimap")) {
430
            Intent intent = new Intent(getApplication(), BasicNaviActivity.class);
431
            intent.putExtra("start_jing", MainApplication.center.longitude + "");
432
            intent.putExtra("start_wei", MainApplication.center.latitude + "");
433
            intent.putExtra("stop_jing", ll.longitude + "");
434
            intent.putExtra("stop_wei", ll.latitude + "");
435
            startActivity(intent);
436
        } else {
437
            if (MainApplication.center != null) {
438
                LayoutInflater inflater1 = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
439
                popupWindowView = inflater1.inflate(R.layout.item_selectmap, null);
440
                popupWindow = new PopupWindow(popupWindowView,
441
                        ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT,
442
                        true);
443
                popupWindow.setBackgroundDrawable(new BitmapDrawable());
444
                // 设置PopupWindow的弹出和消失效果
445
                popupWindow.setAnimationStyle(R.style.popupAnimation);
446
                LinearLayout ll_tvTwo = (LinearLayout) popupWindowView.findViewById(R.id.ll_tvTwo);
447
                if (!isAvilible(getApplicationContext(), "com.autonavi.minimap")) {
448
                    ll_tvTwo.setVisibility(View.GONE);
449
                }
450
                LinearLayout ll_tvOne = (LinearLayout) popupWindowView.findViewById(R.id.ll_tvOne);
451
                if (!isAvilible(getApplicationContext(), "com.baidu.BaiduMap")) {
452
                    ll_tvOne.setVisibility(View.GONE);
453
                }
454
                cancleButton = (Button) popupWindowView.findViewById(R.id.cancleButton);
455
                cancleButton.setOnClickListener(new View.OnClickListener() {
456
                    @Override
457
                    public void onClick(View view) {
458
                        popupWindow.dismiss();
459
                    }
460
                });
461
                tvThree = (TextView) popupWindowView.findViewById(R.id.tvThree);
462
                tvThree.setOnClickListener(new View.OnClickListener() {
463
                    @Override
464
                    public void onClick(View v) {
465
                        Intent intent = new Intent(getApplication(), BasicNaviActivity.class);
466
                        intent.putExtra("start_jing", MainApplication.center.longitude + "");
467
                        intent.putExtra("start_wei", MainApplication.center.latitude + "");
468
                        intent.putExtra("stop_jing", ll.longitude + "");
469
                        intent.putExtra("stop_wei", ll.latitude + "");
470
                        startActivity(intent);
471
                        popupWindow.dismiss();
472
                    }
473
                });
474
                tvOne = (TextView) popupWindowView.findViewById(R.id.tvOne);
475
                tvOne.setOnClickListener(new View.OnClickListener() {
476
                    @Override
477
                    public void onClick(View view) {
478
                        Intent intent = null;
479
                        int position_jing = rz.getPoi_jing().length() - rz.getPoi_jing().indexOf(".") - 1;
480
                        int position_wei = rz.getPoi_wei().length() - rz.getPoi_wei().indexOf(".") - 1;
481
                        if (position_jing > 13 || position_wei > 13) {
482
                            getBaidu1(Double.parseDouble(rz.getPoi_jing()), Double.parseDouble(rz.getPoi_wei()));
483
                        } else {
484
                            bd_jing = Double.parseDouble(rz.getPoi_jing());
485
                            bd_wei = Double.parseDouble(rz.getPoi_wei());
486
                        }
487
                        getBaidu(MainApplication.center.longitude, MainApplication.center.latitude);
488
                        try {
489
                            String s = "intent://map/direction?" +
490
                                    "origin=" + bd_lat + "," + bd_lon + "&" +
491
                                    "destination=" + bd_wei + "," + bd_jing +
492
                                    "&mode=driving&" +
493
                                    "src=充电桩#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end";
494
                            intent = Intent.getIntent(s);
495
                        } catch (URISyntaxException e) {
496
                            e.printStackTrace();
497
                        }
498
                        startActivity(intent);
499
                        popupWindow.dismiss();
500
                    }
501
                });
502
                tvTwo = (TextView) popupWindowView.findViewById(R.id.tvTwo);
503
                tvTwo.setOnClickListener(new View.OnClickListener() {
504
                    @Override
505
                    public void onClick(View view) {
506
                        try {
507
                            Intent intent4 = new Intent("android.intent.action.VIEW",
508
                                    android.net.Uri.parse("androidamap://route?sourceApplication=amap&slat=" + MainApplication.center.latitude + "&slon=" + MainApplication.center.longitude + "&sname=我的位置&dlat=" + ll.latitude + "&dlon=" + ll.longitude + "&dname=" + rz.getZhan_name() + "&dev=0&m=0&t=2"));
509
                            intent4.setPackage("com.autonavi.minimap");
510
                            startActivity(intent4);
511
                            popupWindow.dismiss();
512
                        } catch (Exception e) {
513
                            e.printStackTrace();
514
                            Toast.makeText(getApplication(), "请您确认是否安装高德地图APP", Toast.LENGTH_SHORT).show();
515
                        }
516
517
                    }
518
                });
519
                popupWindow.showAtLocation(cancleButton, Gravity.CENTER, 0, 0);
520
            } else {
521
                Toast.makeText(getApplication(),
522
                        "没有定位到您的当前位置", Toast.LENGTH_SHORT)
523
                        .show();
524
            }
525
        }
526
527
    }
528
529
    private boolean isAvilible(Context context, String packageName) {
530
        //获取packagemanager
531
        final PackageManager packageManager = context.getPackageManager();
532
        //获取所有已安装程序的包信息
533
        List<PackageInfo> packageInfos = packageManager.getInstalledPackages(0);
534
        //用于存储所有已安装程序的包名
535
        List<String> packageNames = new ArrayList<String>();
536
        //从pinfo中将包名字逐一取出,压入pName list中
537
        if (packageInfos != null) {
538
            for (int i = 0; i < packageInfos.size(); i++) {
539
                String packName = packageInfos.get(i).packageName;
540
                packageNames.add(packName);
541
            }
542
        }
543
        //判断packageNames中是否有目标程序的包名,有TRUE,没有FALSE
544
        return packageNames.contains(packageName);
545
    }
546
547
    private void getBaidu(Double jing, Double wei) {
548
        double x_pi = 3.14159265358979324 * 3000.0 / 180.0;
549
        double x = jing;
550
        double y = wei;
551
        double z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi);
552
        double theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi);
553
        bd_lon = z * Math.cos(theta) + 0.0065;
554
        bd_lat = z * Math.sin(theta) + 0.006;
555
    }
556
557
    private void getBaidu1(Double jing, Double wei) {
558
        double x_pi = 3.14159265358979324 * 3000.0 / 180.0;
559
        double x = jing;
560
        double y = wei;
561
        double z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi);
562
        double theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi);
563
        bd_jing = z * Math.cos(theta) + 0.0065;
564
        bd_wei = z * Math.sin(theta) + 0.006;
565
    }
566
567
}

BIN
app/src/main/res/drawable-hdpi/actionsheet_bottom_normal.9.png


+ 58 - 0
app/src/main/res/layout/activity_search_all.xml

@ -0,0 +1,58 @@
1
<?xml version="1.0" encoding="utf-8"?>
2
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
3
    xmlns:app="http://schemas.android.com/apk/res-auto"
4
    xmlns:tools="http://schemas.android.com/tools"
5
    android:layout_width="match_parent"
6
    android:layout_height="match_parent"
7
    tools:context=".activity.SearchAllActivity">
8
9
    <androidx.constraintlayout.widget.ConstraintLayout
10
        android:id="@+id/nav_bar"
11
        android:layout_width="match_parent"
12
        android:layout_height="44dp"
13
        app:layout_constraintLeft_toLeftOf="parent"
14
        app:layout_constraintRight_toRightOf="parent"
15
        app:layout_constraintTop_toTopOf="parent">
16
17
        <ImageView
18
            android:id="@+id/iv_back"
19
            android:layout_width="wrap_content"
20
            android:layout_height="match_parent"
21
            android:contentDescription="@null"
22
            android:paddingLeft="15dp"
23
            android:paddingRight="15dp"
24
            android:src="@drawable/icon_lvback1119"
25
            app:layout_constraintBottom_toBottomOf="parent"
26
            app:layout_constraintLeft_toLeftOf="parent"
27
            app:layout_constraintTop_toTopOf="parent" />
28
29
        <TextView
30
            android:id="@+id/iv_title"
31
            android:layout_width="match_parent"
32
            android:layout_height="match_parent"
33
            android:gravity="center"
34
            android:textColor="#222222"
35
            android:textSize="18sp"
36
            tools:text="全部目的地" />
37
38
        <View
39
            android:layout_width="match_parent"
40
            android:layout_height="0.5dp"
41
            android:background="#dddddd"
42
            app:layout_constraintBottom_toBottomOf="parent"
43
            app:layout_constraintLeft_toLeftOf="parent"
44
            app:layout_constraintRight_toRightOf="parent" />
45
    </androidx.constraintlayout.widget.ConstraintLayout>
46
47
    <ListView
48
        android:id="@+id/lv_search_list"
49
        android:layout_width="match_parent"
50
        android:layout_height="0dp"
51
        android:background="@color/white"
52
        android:cacheColorHint="@color/transparent"
53
        android:fadingEdge="none"
54
        android:listSelector="@color/transparent"
55
        app:layout_constraintBottom_toBottomOf="parent"
56
        app:layout_constraintTop_toBottomOf="@+id/nav_bar" />
57
58
</androidx.constraintlayout.widget.ConstraintLayout>