2015-01-21 3 views
0

У меня возникли проблемы с отображением одного из моих JSONObjects в ListView. Я использую стандартный JSON Parser, Async Task и т. Д., И все работает отлично для всех, кроме одной конкретной строки, которая является общей. Вот мои фрагменты кода:Android JSONObject decimal не отображается

JSON:

{ 
     "item": "Item name", 
     "quantity": "67", 
     "unit": "m", 
     "total": "603.00" 
}, 

Android:

if (jsonStr != null) { 
try { 
    JSONObject jsonObj = new JSONObject(jsonStr); 

    items = jsonObj.getJSONArray(TAG_ITEMS); 

    for (int a = 0; a < items.length(); a++) { 
     JSONObject l = items.getJSONObject(a); 

     String item = l.getString(TAG_ITEM_NAME); 
     String unit = l.getString(TAG_UNIT); 
     String total = l.getString(TAG_TOTAL); 
     String quantity = l.getString(TAG_QUANTITY); 

     Log.d("item got: ", "> " + item); 
     Log.d("unit got: ", "> " + unit); 
     Log.d("total got: ", "> " + total); 
     Log.d("qty got: ", "> " + quantity); 

     HashMap<String, String> myItems = new HashMap<String, String>(); 

     myItems.put(TAG_ITEM_NAME, item); 
     myItems.put(TAG_UNIT, unit); 
     myItems.put(TAG_TOTAL, total); 
     myItems.put(TAG_QUANTITY, quantity); 

     itemList.add(myItems); 
     } 

    } catch (JSONException e) { 
       e.printStackTrace(); 
      } 
    } else { 
      Log.e("ServiceHandler", "Couldn't get any data from the url"); 
    } 

return null; 
    } 

    @Override 
    protected void onPostExecute(Void result) { 
     super.onPostExecute(result); 
     // Dismiss the progress dialog 
     if (pDialog.isShowing()) 
      pDialog.dismiss(); 
     /** 
     * Updating parsed JSON data into ListView 
     * */ 
     ListAdapter adapter = new SimpleAdapter(ItemsActivity.this, 
       itemList, R.layout.item_list_item, 
       new String[] { TAG_ITEM_NAME, TAG_UNIT, TAG_TOTAL, TAG_QUANTITY }, 
       new int[] { R.id.itemName, R.id.unit, R.id.total, R.id.quantity}); 

     setListAdapter(adapter); 
    } 

XML:

<TextView 
    android:id="@+id/itemName" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" /> 

<TextView 
    android:id="@+id/total" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" /> 

<TextView 
    android:id="@+id/unit" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" /> 

<TextView 
    android:id="@+id/quantity" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" /> 

Теперь, согласно Бревенчатый, все четыре 'есть', но когда я попытаюсь поместить их в свой ListView, общее число (десятичная цифра) не будет отображаться. Одиночные номера и другие не десятичные числа отображаются отлично, и все это строка в JSON, поэтому почему я не могу отобразить свою итоговую сумму?

Confused ...

+2

Можете ли вы включить, как вы показываете свои значения? Я чувствую запах опечатки. – Marius

+0

@Marius, см. Править – BlueSkyDevs

+0

@ Marius - Я идиот! Код, который я разместил, не был фактическим кодом, но вы были в правильной области. Один из XML TextView не совпадал с R.id.total, поэтому после быстрого изменения он отлично отображен. Спасибо, что помогли мне в правильном направлении! – BlueSkyDevs

ответ

-1

использование этого

findViewById(R.id.itemName).setText(myItems.get(TAG_ITEM_NAME)); 

, но до этого замыкающих, myItems доступны.

+1

Он не переопределяет 'getView', ваш ответ совершенно неактуальен. – Marius

+0

Вы правы, он может использовать это, используя контекст действия. –

+0

Я довольно много уверен, что я правильно: 'ListAdapter адаптер = новый SimpleAdapter (ItemsActivity.this, ITEMLIST, R.layout.item_list_item, новый String [] {TAG_ITEM_NAME, TAG_UNIT, TAG_TOTAL, TAG_QUANTITY}, новый int [] {R.id.itemName, R.id.unit, R.id.total, R.id.quantity}); setListAdapter (адаптер); ' – Marius

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