2015-08-27 5 views
-2

У меня есть JSONArray, и я хочу добавить все объекты в списокView как часть домашней работы в школе.Почему listView неправильно отображает мои объекты?

Как я получил код прямо сейчас, ListView является отображающим ссылкой на объект, но не Струны: Print screen

Я получил код в GitHub:

https://github.com/tomasfly/ejercicioFinalLottery

У меня есть создал 3 пакета (модель, представление, контроллер), и в моей mainActivy у меня есть класс, который простирается от AsyncTask и имеет следующий метод onPostExecute():

protected void onPostExecute(String s) { 

     if(s == null) { 
      responseText.setText("Error en la solicitud http"); 
     } 
     else { 
      try { 
       String jsonInterpretado = ""; 
       JSONArray jsonArray = new JSONArray(s); 
       //jsonInterpretado = jsonArray.toString(); 
       //jsontxt.setText(jsonInterpretado); 
       int largoJson = jsonArray.length(); 
       String largoArray=Integer.toString(largoJson); 
       Log.d(TAG, "la cantidad de objetos en el array es de" + largoArray); 

       for (int i = 0; i < jsonArray.length(); i++) { 
        JSONObject json_object = jsonArray.getJSONObject(i); 
        Jugadas jugadas = new Jugadas(); 
        jugadas.setDraw_date(json_object.optString("draw_date")); 
        //Log.d(TAG, "draw date" + i + jugadas.getDraw_date()); 
        jugadas.setWinnin_numbers(json_object.optString("winning_numbers")); 
        jugadas.setMultiplier(json_object.optString("multiplier")); 
        arrayOfData.add(jugadas); 

       /* String drawdate = json_object.optString("draw_date"); 
        String numbers = json_object.optString("winning_numbers"); 
        String multiplier = json_object.optString("multiplier");*/ 
       } 

       responseText.setText("Conexion OK"); 
       lv.setAdapter(adapter); 

       //Log.d(TAG, arrayOfData.toString()); 

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

     } 


    } 
+1

Я думаю, что код от вашего адаптера более важен в этом случае –

+0

Он не использует пользовательский адаптер. он переходит в список объектов, так что сообщение вверху имеет смысл. –

+0

как вы создали объект адаптера и как вы устанавливаете значения в listview, создание объекта пост-адаптера. – Hanuman

ответ

1

Вы можете просто переопределить toString() в своей модели Jugadas.

В противном случае вам необходимо переопределить getView() в вашем адаптере и заполнить текст оттуда.

adapter = new ArrayAdapter<Jugadas>(this,android.R.layout.simple_list_item_1, arrayOfData){ 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View view; 
     if (convertView == null) { 
      view = mInflater.inflate(R.layout.list_item_vehicle_info, parent, false); 
     } else { 
      view = convertView; 
     } 

     final TextView text= (TextView) view.findViewById(android.R.id.text1); 

     final Jugadas item = getItem(position); 
     text.setText(item.name()); 
     //item.name() above is just an example. you will do whatever you need to get the string you want from your data instance. 
     return view; 
    } 
} 
1

Хорошо, глядя на ваш код и ваш комментарий, его легко увидеть, что вы проходите объект и просто выполняете строчку объекта. Почему бы вам не извлечь какую-либо строку, которую вы хотите отобразить в объекте, в другой массив строк.

Смежные вопросы