2016-04-23 4 views
1

データを読み込んだ後にリストビューは表示されませんが、画面表示が消えてリストが表示されます。 happening.iアプリをテストするためにxiamoiマイルフォンを使用していますいただきました!他の活動コードは、ちょうどあなたがサーバーからデータをフェッチした後((ArrayAdapter<Model>)getListAdapter()).notifyDataSetChanged()を呼び出す必要があり、私はデータを読み込んだ後にリストは表示されませんが、ディスプレイが消灯してリストが表示されたとき

import java.util.ArrayList; 
import java.util.List; 
import android.app.ListActivity; 
import android.app.ProgressDialog; 
import android.os.Bundle; 
import android.widget.ArrayAdapter; 

public class FriendList extends ListActivity { 

    String email; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     Bundle bundle = getIntent().getExtras(); 
     email = bundle.getString("email"); 

     setContentView(R.layout.contacts_list); 

     final List<Model> list = new ArrayList<Model>(); 

     /** This block is for getting the image url to download from the server **/ 
     final GetDataFromDB getvalues = new GetDataFromDB(); 

     final ProgressDialog dialog = ProgressDialog.show(FriendList.this, 
       "", "Gettting values from DB", true); 
     new Thread (new Runnable() { 
      public void run() { 
       String response = getvalues.getImageURLAndDesciptionFromDB(email); 
       System.out.println("Response : " + response); 


       if (!response.equalsIgnoreCase("")) { 
        if (!response.equalsIgnoreCase("error")) { 

         dismissDialog(dialog); 
         // Got the response, now split it to get the image Urls and description 
         String all[] = response.split("\\|::endline::\\|"); 
         for(int k = 0; k < all.length; k++){ 
          String urls_and_desc[] = all[k].split("\\|::break::\\|"); // urls_and_desc[0] contains image url and [1] -> description 
          System.out.println("image url : " + urls_and_desc[2]); 

          list.add(get(urls_and_desc[1], "https://xxxx.xx/" + urls_and_desc[2])); 


         } 
        } 

       } else { 
        dismissDialog(dialog); 
       } 
      } 
     }).start(); 
     /*************************** GOT data from Server ********************************************/ 

     ArrayAdapter<Model> adapter = new MyCustomArrayAdapter(this, list); 
     adapter.notifyDataSetChanged(); 
     setListAdapter(adapter); 


    } 

    public void dismissDialog(final ProgressDialog dialog){ 
     runOnUiThread(new Runnable() { 
      public void run() { 
       dialog.dismiss(); 
      } 
     }); 
    } 
    private Model get(String s, String url) { 
     return new Model(s, url); 
    } 

} 

答えて

0

を教えて必要とする場合:私はこれを試してみました

new Thread (new Runnable() { 
     public void run() { 
      String response = getvalues.getImageURLAndDesciptionFromDB(email); 
      System.out.println("Response : " + response); 


      if (!response.equalsIgnoreCase("")) { 
       if (!response.equalsIgnoreCase("error")) { 

        dismissDialog(dialog); 
        // Got the response, now split it to get the image Urls and description 
        String all[] = response.split("\\|::endline::\\|"); 
        for(int k = 0; k < all.length; k++){ 
         String urls_and_desc[] = all[k].split("\\|::break::\\|"); // urls_and_desc[0] contains image url and [1] -> description 
         System.out.println("image url : " + urls_and_desc[2]); 

         list.add(get(urls_and_desc[1], "https://xxxx.xx/" + urls_and_desc[2])); 
        } 
        runOnUiThread(new Runnable() { 
         @Override 
         public void run() { 
          ((ArrayAdapter<Model>)getListAdapter()).notifyDataSetChanged();//Notify ListView to update itself. 
         } 
        }); 
       } 

      } else { 
       dismissDialog(dialog); 
      } 
     } 
    }).start(); 
+0

が、私は "notifyDataSetChangedメソッドを解決できません"のようなエラーが発生しました –

+0

私は自分の答えを更新する。 'getListAdapter()'によって返されたアダプタを 'ArrayAdapter'にキャストする必要があります。 – shhp

+0

「ビュー階層を作成した元のスレッドのみがそのビューに触れることができる」のようなエラーが表示されます。 –

関連する問題