簡體   English   中英

對話框僅顯示數組列表中的最后一項

[英]dialog box displays only the last item in the array list

我正在嘗試顯示數組列表中的數據,但是標記onclick之后,它僅顯示材質對話框中數組列表中的最后一個元素
DriverLocationDataManager獲取數據庫中驅動程序的地理位置的所有數據快照

在添加所有驅動程序數據之后,我使用addMarker函數來獲取地理位置並在地圖上設置標記。

//Init data manager

    drivers = new ArrayList<>(0);



    dataManager = new DriverLocationDataManager(this) {
        @Override
        public void onDataLoaded(List<Driver> data) {
            if (data.isEmpty()) {
                Snackbar.make(container, "Sorry!. UG Shuttle service is currently unavailable",
                        Snackbar.LENGTH_INDEFINITE).show();
            } else {

                drivers.addAll(data);


                List<Marker> markers = addMarkers(data);
                for (int i = 0; i < markers.size(); i++){
                    markers.get(i);
                    Driver driver = drivers.get(i);
                    map.setOnMarkerClickListener(marker -> {
                        // Get custom view
                        View v = getLayoutInflater().inflate(R.layout.driver_popup, null, false);

                        //Assign props
                        TextView username = v.findViewById(R.id.driver_username);
                        CircularImageView profile = v.findViewById(R.id.driver_profile);
                        ImageView status = v.findViewById(R.id.driver_status);
                        TextView shuttle = v.findViewById(R.id.driver_bus_number);
                        ViewGroup viewGroup = v.findViewById(R.id.group);

                        //Init props
                        Glide.with(getApplicationContext())
                                .load(driver.getProfile())
                                .apply(RequestOptions.circleCropTransform())
                                .apply(RequestOptions.placeholderOf(R.drawable.avatar_placeholder))
                                .apply(RequestOptions.errorOf(R.drawable.avatar_placeholder))
                                .apply(RequestOptions.diskCacheStrategyOf(DiskCacheStrategy.AUTOMATIC))
                                .transition(withCrossFade())
                                .into(profile);

                        username.setText(driver.getDriver());   //Driver's username
                        shuttle.setText(driver.getCarNumber()); //Driver's car number

                        //Attach to dialog
                        Builder materialDialog = new Builder(HomeActivity.this)
                                .customView(v, true)
                                .negativeText("Dismiss")
                                .onPositive((dialog, which) -> {
                                    dialog.dismiss();
                                    enableTracking(marker);
                                })
                                .onNegative((dialog, which) -> dialog.dismiss());

                        if (driver.isStatus()) {
                            status.setImageResource(android.R.color.holo_green_light);  //Online

                            //Enable tracking when driver is online
                            materialDialog.positiveText("Track")
                                    .onPositive((dialog, which) -> {
                                        dialog.dismiss();
                                        enableTracking(marker);
                                    });
                        } else {
                            //Tracking is disabled
                            status.setImageResource(android.R.color.holo_red_light);    //Offline
                        }

                        materialDialog.build().show();
                        return true;
                    });



                }
            }
        }
    };

我邀請您在這里閱讀官方開發人員指南。 它說明了如何正確使用對話框,如何在其中顯示列表,以及如果需要一個自定義視圖來顯示列表,甚至如何實現自定義視圖。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM