2011-11-07 1 views
0

웹에서 30 초마다 데이터를 수신합니다. 문제는 listview의 데이터가 새로 고쳐지지 않는다는 것입니다. 나는 사용자가이 코드 :웹에서 데이터를 수신 할 때 목록보기 새로 고침

if (playlists.length != 0) { 
      MyListView = (ListView) findViewById(R.id.MyListView); 
      adapter1 = new ArrayAdapter<String>(this, 
        android.R.layout.simple_list_item_1, playlists); 

      MyListView.setAdapter(adapter1); 
} 

내가 목록보기의 웹 데이터에서 얻을하지만이 화면에 표시되지 않습니다

t = new Timer(); 
     t.scheduleAtFixedRate(new TimerTask() { 
      @Override 
      public void run() { 
       doReload1(); 

      } 
     }, 300, 30000); 

public void doReload1() { 

       runOnUiThread(new Runnable(){ 
          public void run() { 
           System.out.println("Every 30 sec getPlaylist"); 

           try { 
            HttpClient httpclient = new DefaultHttpClient(); 
            String link = "http://test.res-novae.fr/sfr/imalive.php?device_key=" 
              + deviceId + "&device_type=9"; 
            System.out.println("trimit " + link); 
            HttpPost httppost = new HttpPost(link); 
            try { 
             httpclient.execute(httppost); 
             GetPlaylists(); 

             System.out.println("getplaylist"); 

            } catch (ClientProtocolException e) { 

            } 
           } catch (Exception e) { 
            e.printStackTrace(); 
           } 

          } 
        }); 

및 채우기 목록보기에 대한

.

try { 

       HttpResponse response = httpclient.execute(httppost); 

       /* Checking response */ 
       if (response != null) { 
        String responseBody = EntityUtils.toString(response 
          .getEntity()); 
        System.out 
          .println("Rezultat de la server :" + responseBody); 

        String jsonString = responseBody.toString(); 
        JSONObject jsonObject = new JSONObject(jsonString); 

        jArray = jsonObject.getJSONArray("_playLists"); 

        playlists = new String[jArray.length()]; 
        idPlaylist = new String[jArray.length()]; 
        timerPlaylist = new String[jArray.length()]; 

        for (int i = 0; i < jArray.length(); i++) { 

         JSONObject jsdata = jArray.getJSONObject(i); 
         String id = jsdata.getString("id_playlist"); 
         String namePlaylist = jsdata.getString("name"); 
         String timer = jsdata.getString("timer"); 
         System.out.println("Name playlist" + namePlaylist); 
         playlists[i] = namePlaylist; 
         idPlaylist[i] = id; 
         timerPlaylist[i] = timer; 
        } 

        for (int i = 0; i < jArray.length(); i++) { 
         System.out.println("playlists : " + playlists[i] +"\n"); 
        } 
       } 
+0

좋아요 보지 않습니다 새로 고침 문제. 어댑터를 설정할 때 배열의 내용을 콘솔에 로그온 했습니까? – jptsetung

+0

예, 웹에서 얻은 결과는 다음과 같습니다. { "_playLists": [{ "id_playlist": "33", "name": "SFR Demo", "timer": "2"}, "id_playlist": "50", "name": "trei", "timer": "1"}, { "id_playlist": "49", "name": "second'playlist" 1 "}}} 및 playLists에"SFR Demo ","Second'playlist ","trei "가 포함되어 있습니다. – Gabrielle

+0

어댑터를 만들기 전에 재생 목록을 덮어 쓸 수 있습니까? 예를 들어, 어댑터를 작성하기 전에이 행을 추가하십시오. String [] playlists = new String [] { "Item0", "Item1", "Item3"}; – jptsetung

답변

0

이 시도 :

if (playlists.length != 0) { 
      MyListView = (ListView) findViewById(R.id.MyListView); 
      adapter1 = new ArrayAdapter<String>(this, 
        android.R.layout.simple_list_item_1, playlists); 

      MyListView.setAdapter(adapter1); 
      adapter1.notifyDataSetChanged(); 
} 
+0

아무것도 변경 ... 목록보기 업데이 트되지 않습니다. 나는 adapter1.notifyDataSetChanged() 호출을 시도했다; 많은 장소에 있지만 아무것도 바뀌지 않습니다. – Gabrielle

+0

매 30 초마다 노래를 다운로드하고 있습니다. 그러면 listview가 완전히 업데이트되지 않아 UI가 stick.so가되어 업데이트를 볼 수 없습니다. 지금 당장 2 분마다 확인하십시오. 그래서 listview는 업데이트 될 시간을 얻을 수 있고 여러분은 변경 사항을 볼 수 있습니다. – Hiral

+0

노래가 없습니다 ... 일부 재생 목록의 이름이며 간격 시간은 30 초 여야합니다 – Gabrielle

1

을 당신은에 네트워크 요청을하고있는 Plase help..I 여기 내 재생 목록의 배열이 :(

와 함께 많은 시간을 보냈다 UI 스레드 - 요청이 너무 오래 걸리는 경우 ANR이 발생합니다. 만든 스레드에서 Http 작업을 수행 한 다음 runOnUIThread 호출 내에서 목록보기를 업데이트하거나 AsyncTask

관련 문제