2014-11-06 2 views
1

Я анализирую данные с сервера с помощью json. Затем сохраните их в Arraylist и загрузите их в spinner в android. Но я получаю одинаковое значение для всех данных счетчика. Например я адресности данные JSon следующим образом:Невозможно загрузить данные ArrayList в spinner в android

[{"pricing":"500,600,700,800,900,1000"}]

Теперь я запятая разделяющей их и добавить их в ArrayList, как это:

List<String> items = Arrays.asList(Pricing.split(",")); 
for(int j=0;j<items.size();j++) 
{ 
    r.add(items.get(i)); 
} 

Затем загрузке ArrayList в блесны. Вот мой полный код:

try 
       { 
        json = new JSONArray(data); 
        for (int i = 0; i < json.length(); i++) 
        { 
         JSONObject obj = json.getJSONObject(i); 
         String Pricing = obj.getString("pricing"); 

         List<String> items = Arrays.asList(Pricing.split(",")); 
         List<String> r = new ArrayList<String>(); 
         for(int j=0;j<items.size();j++) 
         { 
          r.add(items.get(i)); 
         } 
        } 

        @SuppressWarnings({ "rawtypes", "unchecked" }) 
        ArrayAdapter cd = new ArrayAdapter(this,android.R.layout.simple_spinner_item,r); 
        cd.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
        spin2.setAdapter(cd); 
} 

Но кок имеет 500 500 500 500 500 500 вместо 500 600 700 800 900 1000. Что-то не так я делаю в этом коде .. ?? Я новичок в андроиде. Пожалуйста, предложите мне решение.

+1

use j вместо этого мне нравится: r.add (items.get (j)); –

ответ

2

Попробуйте этот путь, надеюсь, это поможет вам решить вашу проблему.

Вы используете неправильную индексную переменную (i), которая предназначена для внешнего цикла, но ваши данные получают доступ через внутренний цикл, поэтому просто замените (i) индексную переменную переменной индекса (j).

r.add(items.get(i)); 

Заменить

r.add(items.get(j)); 
+1

thanxx ... thts незначительная глупая ошибка. :): D – Ruchir

+0

@ user3519241, удачи, но, пожалуйста, обратите внимание следующий раз за такую ​​ошибку. –

+0

@ user3519241, Пожалуйста, примите всех пользователей, которые дают вам первый совет, чтобы решить вашу проблему. –

2

Похоже, вы пытаетесь добавить такое же значение в свой список, т. Е. Добавление 0th значение во всем списке, потому что индекс i предназначен для массива json, а ваш правый индекс будет j.

Меняет

r.add(items.get(i)); 

в

r.add(items.get(j)); 
1

Попробуйте изменить ниже код:

List<String> items = Arrays.asList(Pricing.split(",")); 
         List<String> r = new ArrayList<String>(); 
         for(int j=0;j<items.size();j++) 
         { 
          r.add(items.get(i)); 
         } 

через

List<String> items = Arrays.asList(Pricing.split(",")); 
         List<String> r = new ArrayList<String>(); 
         for(int j=0;j<items.size();j++) 
         { 
          r.add(items.get(j)); 
         } 

потому и использовать I вместо у.

+0

Надеюсь, это может вам помочь! –

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