Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Android] Problème d'affichage des données sur listView

Sujet résolu
    17 août 2012 à 0:55:15

    Bonjour,

    Je travaille sur une application Android dont l'objectif est de récupérer des données issus d'une bdd MySQL en générant des réponses JSON, et aussi afficher ces données dans une listView.

    J'ai suivi la formation dans cette vidéo : http://www.youtube.com/watch?feature=p [...] v=0TulTqQM0Cc

    L'opération de récupération des données est bien faite.

    Le seul problème se focalise dans l'affichage.

    Voilà ma classe qui contient tout :

    public class afficherAbonnes extends Activity{
    
    ListView listView;
    private String URL = "http://10.0.2.2/FlashInfoWebServices/listeabonnes.php";
    ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
    List<Utilisateur> listeUsers = null;
    
    ArrayList<Utilisateur> arrayOfWebData = new ArrayList<Utilisateur>();
    FancyAdapter aa = null;
    
    static ArrayList<String> resultRow;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.afficherabonnesadmin);
    
    listView = (ListView) findViewById(R.id.listView1);
    
    getServerData(URL);
    
    aa = new FancyAdapter();
    listView.setAdapter(aa);
    }
    
    
    
    
    class FancyAdapter extends ArrayAdapter<Utilisateur>
    {
    
    public FancyAdapter() {
    super(afficherAbonnes.this, android.R.layout.simple_list_item_1, arrayOfWebData);
    // TODO Auto-generated constructor stub
    }
    
    public View getView(int position, View convertView, ViewGroup parent)
    {
    ViewHolder holder;
    
    if(convertView==null) {
    LayoutInflater inflater = getLayoutInflater();
    convertView = inflater.inflate(R.layout.list_abonnes, null);
    holder = new ViewHolder(convertView);
    
    convertView.setTag(holder);
    }
    else
    {
    holder = (ViewHolder) convertView.getTag();
    }
    holder.form((Utilisateur) arrayOfWebData.get(position));
    
    return (convertView);
    
    }
    
    }
    
    class ViewHolder {
    
    public TextView login = null;
    public TextView password = null;
    public TextView nom = null;
    
    public ViewHolder(View view) {
    login = (TextView) findViewById(R.id.textLogin);
    password = (TextView) findViewById(R.id.textPassword);
    nom = (TextView) findViewById(R.id.textNom);
    }
    
    void form(Utilisateur i) {
    login.setText(i.getLogin().toString());
    password.setText(i.getPassword().toString());
    nom.setText(i.getNom().toString());
    }
    }
    
    
    public void getServerData(String URL) {
    
    InputStream is = null;
    String result = "";
    //JSONObject jArray = null;
    JSONArray jArray = null;
    
    try {
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost(URL);
    HttpResponse response = httpclient.execute(httppost);
    HttpEntity entity = response.getEntity();
    is = entity.getContent();
    
    } catch(Exception e) {
    Log.e("log_tag", "Error in http connection " + e.toString());
    }
    
    // Convertion de la requête en string
    try {
    BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
    StringBuilder sb = new StringBuilder();
    String line = null;
    while ((line = reader.readLine()) != null) {
    sb.append(line + "\n");
    }
    is.close();
    result = sb.toString();
    Log.e("log_tag", "Resulta du fichier jsp" + result);
    
    }catch(Exception e){
    Log.e("log_tag", "Error converting result " + e.toString());
    }
    // Parse les données JSON
    try{
    jArray = new JSONArray(result);
    for(int i=0; i<jArray.length(); i++)
    {
    JSONObject json_data = jArray.getJSONObject(i);
    Toast.makeText(this, json_data.getString("login"), Toast.LENGTH_SHORT).show();
    Utilisateur resultRow = new Utilisateur(json_data.getString("login")
    , json_data.getString("password")
    , json_data.getString("nom"));
    arrayOfWebData.add(resultRow);
    }
    
    }catch(JSONException e){
    Log.e("log_tag", "Error parsing data " + e.toString());
    }
    
    }
    
    }
    


    Voilà les erreurs qui s'affichent quand j'accède à l'activité :

    08-16 21:07:31.888: E/AndroidRuntime(788): java.lang.NullPointerException
    08-16 21:07:31.888: E/AndroidRuntime(788): at adminActivity.afficherAbonnes$ViewHolder.form(afficherAbonnes.java:109)
    08-16 21:07:31.888: E/AndroidRuntime(788): at adminActivity.afficherAbonnes$FancyAdapter.getView(afficherAbonnes.java:88)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.widget.AbsListView.obtainView(AbsListView.java:1315)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.widget.ListView.measureHeightOfChildren(ListView.java:1198)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.widget.ListView.onMeasure(ListView.java:1109)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.View.measure(View.java:8171)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1012)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.widget.LinearLayout.measureVertical(LinearLayout.java:381)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.widget.LinearLayout.onMeasure(LinearLayout.java:304)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.View.measure(View.java:8171)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.View.measure(View.java:8171)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.View.measure(View.java:8171)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.View.measure(View.java:8171)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1012)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.widget.LinearLayout.measureVertical(LinearLayout.java:381)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.widget.LinearLayout.onMeasure(LinearLayout.java:304)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.View.measure(View.java:8171)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.View.measure(View.java:8171)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1012)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.widget.LinearLayout.measureVertical(LinearLayout.java:381)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.widget.LinearLayout.onMeasure(LinearLayout.java:304)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.View.measure(View.java:8171)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.View.measure(View.java:8171)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.widget.LinearLayout.measureVertical(LinearLayout.java:526)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.widget.LinearLayout.onMeasure(LinearLayout.java:304)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.View.measure(View.java:8171)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.View.measure(View.java:8171)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.ViewRoot.performTraversals(ViewRoot.java:801)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.os.Handler.dispatchMessage(Handler.java:99)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.os.Looper.loop(Looper.java:123)
    08-16 21:07:31.888: E/AndroidRuntime(788): at android.app.ActivityThread.main(ActivityThread.java:4627)
    08-16 21:07:31.888: E/AndroidRuntime(788): at java.lang.reflect.Method.invokeNative(Native Method)
    08-16 21:07:31.888: E/AndroidRuntime(788): at java.lang.reflect.Method.invoke(Method.java:521)
    08-16 21:07:31.888: E/AndroidRuntime(788): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
    08-16 21:07:31.888: E/AndroidRuntime(788): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
    08-16 21:07:31.888: E/AndroidRuntime(788): at dalvik.system.NativeStart.main(Native Method)


    J'ai besoin de votre aide et vos renseignements.

    Merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      17 août 2012 à 11:11:39

      T'es pas occupé sur une des dernières version d'android?
      Si oui faut utiliser une fonction asynchrone pour que ça fonctionne ;-)
      Je m'étais aussi fait avoir
      • Partager sur Facebook
      • Partager sur Twitter

      [Android] Problème d'affichage des données sur listView

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown