【问题标题】:Android spinner using array adapter not showing all data使用数组适配器的 Android 微调器未显示所有数据
【发布时间】:2013-12-12 15:29:50
【问题描述】:

我正在尝试使用谷歌地图 v2 构建应用程序。我的目标是尝试获取用户当前位置,然后通过 spinner1 向他们展示附近的地方。如果用户选择例如医院,那么在地图上它将显示医院的标记。以下是 logcat 中的结果。

所以,我在 spinner1 的右侧添加了另一个微调器 (spinner2) 来存储所有这些医院名称。如您所见,logcat 上有 20 家医院,但我的问题出在 spinner2 上,它只显示 1 家医院。

如何将这 20 个数据添加到 spinner2?这是我的代码:

    ...
    @Override
    protected void onPostExecute(List<HashMap<String, String>> list){

        gmapv2.clear();

        for(int i = 0; i<list.size(); i++){
            MarkerOptions m_opt = new MarkerOptions();
            HashMap<String, String> hash_tempat = list.get(i);
            double llat = Double.parseDouble(hash_tempat.get("lat"));
            double llong = Double.parseDouble(hash_tempat.get("lng"));
            String nama = hash_tempat.get("place_name");
            //Log.d("dari gg ke hendy", nama);
            String vici = hash_tempat.get("vicinity");
            Log.d("dari gg ke hendy", nama + " " + vici);
            LatLng ab_latLng = new LatLng(llat, llong);
            m_opt.position(ab_latLng);
            m_opt.title(nama + " : " + vici);
            m_opt.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE));
            Marker e = gmapv2.addMarker(m_opt);
            detailTempat.put(e.getId(), hash_tempat.get("reference"));

            adapt = new ArrayAdapter<String>(Places_On_Resta_Map.this, android.R.layout.simple_spinner_item, new ArrayList<String>());
            adapt.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            spinnerDetail.setAdapter(adapt);
            adapt.add(nama);
            pDialog.dismiss();
        }
    }

任何想法或帮助将不胜感激。 环境:Windows 7、Eclipse、Genymotion。

【问题讨论】:

标签: android android-spinner


【解决方案1】:

尝试如下:

   ArrayList<String> myArray;
 for(int i = 0; i<list.size(); i++){
        MarkerOptions m_opt = new MarkerOptions();
        HashMap<String, String> hash_tempat = list.get(i);
        double llat = Double.parseDouble(hash_tempat.get("lat"));
        double llong = Double.parseDouble(hash_tempat.get("lng"));
        String nama = hash_tempat.get("place_name");
        myArray.add(nama);

        String vici = hash_tempat.get("vicinity");
        Log.d("dari gg ke hendy", nama + " " + vici);
        LatLng ab_latLng = new LatLng(llat, llong);
        m_opt.position(ab_latLng);
        m_opt.title(nama + " : " + vici);
        m_opt.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE));
        Marker e = gmapv2.addMarker(m_opt);
        detailTempat.put(e.getId(), hash_tempat.get("reference"));
    }

      adapt = new ArrayAdapter<String>(Places_On_Resta_Map.this, 
       android.R.layout.simple_spinner_item, myArray); //Change your array here
        adapt.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinnerDetail.setAdapter(adapt);
      pDialog.dismiss();

【讨论】:

  • @GrlsHu 对不起,如果你不介意的话,我在你的帖子上读到了关于谷歌地图 v2 上的动画标记,你能帮我写这篇文章吗 --> http://stackoverflow.com/questions/20581256/how-to-animate-google-map-v2-marker-on-the-polyline-path 谢谢你的帮助 :)
【解决方案2】:

你可以这样做:

@Override
protected void onPostExecute(List<HashMap<String, String>> list){

    gmapv2.clear();
    adapt = new ArrayAdapter<String>(Places_On_Resta_Map.this, android.R.layout.simple_spinner_item, new ArrayList<String>());
    adapt.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    for(int i = 0; i<list.size(); i++){
        MarkerOptions m_opt = new MarkerOptions();
        HashMap<String, String> hash_tempat = list.get(i);
        double llat = Double.parseDouble(hash_tempat.get("lat"));
        double llong = Double.parseDouble(hash_tempat.get("lng"));
        String nama = hash_tempat.get("place_name");
        //Log.d("dari gg ke hendy", nama);
        String vici = hash_tempat.get("vicinity");
        Log.d("dari gg ke hendy", nama + " " + vici);
        LatLng ab_latLng = new LatLng(llat, llong);
        m_opt.position(ab_latLng);
        m_opt.title(nama + " : " + vici);
        m_opt.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_ORANGE));
        Marker e = gmapv2.addMarker(m_opt);
        detailTempat.put(e.getId(), hash_tempat.get("reference"));

        adapt.add(nama);//<---------
        pDialog.dismiss();
    }
   spinnerDetail.setAdapter(adapt);//<---------
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-16
    • 1970-01-01
    • 1970-01-01
    • 2016-09-09
    • 1970-01-01
    • 2019-12-12
    • 1970-01-01
    相关资源
    最近更新 更多