2016-04-23 7 views
1

Listenansicht wird nicht nach dem Laden der Daten angezeigt, aber wenn die Bildschirmanzeige ausgeschaltet ist und auf der Liste angezeigt wird.nicht wissen was happening.i xiamoi mi Telefon ist mit der App zu testen, ob andere Code-Aktivitäten erfordert lassen Sie mich weiß nurListe wird nicht nach dem Laden der Daten angezeigt, aber wenn die Anzeige ausgeschaltet ist und eine Liste angezeigt wird

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); 
    } 

} 

Antwort

0

Sie ((ArrayAdapter<Model>)getListAdapter()).notifyDataSetChanged() nach Daten vom Server holen rufen sollen:

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

ich das versucht, aber Ich habe Fehler wie "kann Methode notifyDataSetChanged nicht lösen" –

+0

Ich aktualisiere meine Antwort. Sie sollten den von 'getListAdapter()' zurückgegebenen Adapter in einen 'ArrayAdapter' umwandeln. – shhp

+0

Es zeigt einen Fehler wie "Nur der ursprüngliche Thread, der eine Ansichtshierarchie erstellt hat, kann seine Ansichten berühren". –