片段微调器不会在Android中停止

时间:2012-08-03 12:43:18

标签: android

我使用此代码通过使用数组适配器设置**数据来加载任何特定位置的附近位置。我面临两个问题: 1.即使在加载数据后,微调器也不会停止。 (应该没有微调器。但是我不确定碎片是什么时候的。)

  1. 我要实现AsyncTask以获取这些位置,这样它就不会减慢Activity的速度。我面临的一个小问题是:当他/她更改了他的位置时,如何通过新的日期通知用户(更新视图)。让我们假设用户正在走路。因此纬度/经度会发生变化。那么,我如何使用onChangeNotify()并更改List的值。

    公共类FragmentMap扩展了ListFragment {

        ArrayList<Place> places = new ArrayList<Place>();
        //List<String> val = new List<String>()
        //@InjectView(R.id.explorePlacesListView) ListView placesListView;
        ListView listView;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
    
        }
    
        @Override
        public void onActivityCreated(Bundle savedInstanceState) {
            super.onActivityCreated(savedInstanceState);
    
    
                ListView listView = (ListView) getActivity().findViewById(R.id.explorePlacesListView);
            getPlaces();
    
            PlacesAdapter placesAdapter = new PlacesAdapter(getActivity(),R.layout.user_list_item, places);
            listView.setAdapter(placesAdapter);
        }
    
    
    
        public void getPlaces(){
    
             URL yahoo;
             String key,latitude,longitude;
             key = "AIzaSyAZgD01sj3jssaYCmkLL8c7Z4qPTEdt6xU";
             latitude = "37.77264";
             longitude ="-122.409915";
            try {
    
                yahoo = new URL("https://maps.googleapis.com/maps/api/place/search/json?location=-33.8670522,151.1957362&radius=500&sensor=false&key=AIzaSyB2SGEmOLDGB_f0bp1PGTjQqTw2VuDcaM8");
                URLConnection yc = yahoo.openConnection();
                BufferedReader in = new BufferedReader(
                                        new InputStreamReader(
                                        yc.getInputStream()));
                String inputLine;
                String jsonLine = new String();
                while ((inputLine = in.readLine()) != null) {
                        Log.d("inputLine",inputLine);
    
                        jsonLine = jsonLine + inputLine;
            }
                in.close();
                Object jsonResponse = parseResponse(jsonLine);
                parseJSONPlaces((JSONObject)jsonResponse);
            } catch (MalformedURLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
        }
    
        protected Object parseResponse(String responseBody) throws JSONException {
            return new JSONTokener(responseBody).nextValue();
        }
    
     private void parseJSONPlaces(JSONObject json){
    
         try {
        JSONArray jsonArray =   json.getJSONArray("results");
    
        for (int j = 0; j < json.length(); j++) {
    
            Place place = new Place();
    
    
            place.name = jsonArray.getJSONObject(j).getString("name");
            place.icon = jsonArray.getJSONObject(j).getString("icon");
           // JSONObject locationObject = jsonArray.getJSONObject(j).getJSONObject("location");
           // place.latitude = locationObject.getString("latitude");
           // place.longitude = locationObject.getString("longitude");
            Log.d("name",place.name);
    
            places.add(place);
        }
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
          if(json.optJSONObject("results") != null){
    
    
            }
    
    
    
     }
    

1 个答案:

答案 0 :(得分:2)

您的代码中有一些内容对我来说有点奇怪。

您永远不会调用setListAdapter()将适配器绑定到ListFragment的内部ListView。相反,您将获取另一个ListView并将适配器设置为该适配器。这可能就是为什么列表中没有数据显示的原因,您将改为选择进度指示器。

我不确定我理解你的第二个问题,但你应该把你的UI更新放在AsychTask的onPostExecute方法中。