2017-02-15 6 views
1

Я пытаюсь загрузить вертушку из данных JSON, используя следующий код:Удалите повторяющиеся значения из блесны

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    ArrayList<String> items = getCountries("data.json"); 

    Spinner spinner = (Spinner)findViewById(R.id.spinnerStandard); 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.second_layout,R.id.txtStandard,items); 
    spinner.setAdapter(adapter); 
} 

private ArrayList<String> getCountries(String fileName){ 
    JSONArray jsonArray = null; 
    ArrayList<String> cList = new ArrayList<String>(); 
    try { 
     InputStream is = getResources().getAssets().open(fileName); 
     int size = is.available(); 
     byte[] data = new byte[size]; 
     is.read(data); 
     is.close(); 
     String json = new String(data, "UTF-8"); 
     jsonArray=new JSONArray(json); 
     if (jsonArray != null) { 
      for (int i = 0; i < jsonArray.length(); i++) { 
       cList.add(jsonArray.getJSONObject(i).getString("standard")); 
      } 
     } 
    } 
    catch (IOException e) 
    { 
     e.printStackTrace(); 
    } 
    catch (JSONException je) 
    { 
     je.printStackTrace(); 
    } 
    return cList; 
} 

Мои данные JSON является,

[ 
{ 
    "name":"Manoj", 
    "surname":"Jadhav", 
    "age":"18", 
    "div":"A", 
    "standard":"7" 
}, 
{ 
    "name":"Nilesh", 
    "surname":"Patankar", 
    "age":"17", 
    "div":"B", 
    "standard":"7" 
}, 
{ 
    "name":"Gourav", 
    "surname":"Patil", 
    "age":"18", 
    "div":"A", 
    "standard":"8" 
}, 
{ 
    "name":"Pushkar", 
    "surname":"Ganpule", 
    "age":"17", 
    "div":"A", 
    "standard":"7" 
}, 
{ 
    "name":"Prashant", 
    "surname":"Raut", 
    "age":"18", 
    "div":"A", 
    "standard":"8" 
}, 
{ 
    "name":"Nachiket", 
    "surname":"Salvi", 
    "age":"17", 
    "div":"A", 
    "standard":"7" 
}, 
{ 
    "name":"Hiren", 
    "surname":"Lakhmani", 
    "age":"18", 
    "div":"B", 
    "standard":"6" 
} 

]

В данных JSon Я имея повторяющиеся стандартные значения, поскольку я хочу загружать только уникальные значения из json в spinner (например, есть стандартные значения 7, 7, 8, 7, 8, 7, 6, и я хочу показать только 6, 7, 8 из этих повторяющиеся значения.)

Я пробовал поиск по всем параметрам и многим другим вариантам, о которых я могу думать, и не могу найти полезных результатов, поэтому я, очевидно, ничего не вижу.

Каков правильный способ удаления повторяющихся значений?

+0

Простой способ - вы должны проверить cList weather. Стандарт уже присутствует в нем, если да, тогда нет необходимости добавлять иначе. Я думаю, что если (! CList.contains (Standard)) это работает –

ответ

1

написать этот код выше возврата CList в вашем методе

HashSet<String> hashSet = new HashSet<String>(); 
    hashSet.addAll(cList); 
    cList.clear(); 
    cList.addAll(hashSet); 

return cList; 

или

for (int i = 0; i < jsonArray.length(); i++) { 
if(!Clist.contains(jsonArray.getJSONObject(i).getString("standard"))){ 
    cList.add(); 
} 
} 
+0

Благодарим вас за предложение .. оно работает – neeta

+0

, пожалуйста, отметьте как Accept, то это также поможет другим. –

+0

содержит способ чувствительный к регистру. Пожалуйста, взгляните на него, если у вас есть проблема с чувствительностью к регистру – sanjay

0

From Array to HashSet

Теперь у вас есть уникальные элементы. Преобразуйте его в массив снова и используйте его в адаптере. Должен это делать. Надеюсь это поможет.

0
if(cList.contains(jsonArray.getJSONObject(i).getString("standard"))){ 

}else{ 

    //Add value here.. 

    cList.add(jsonArray.getJSONObject(i).getString("standard")); 

} 
+0

содержит метод чувствителен к регистру. Пожалуйста, взгляните на это, если у вас есть озабоченность по поводу чувствительности к регистру – sanjay

0
for (int i = 0; i < jsonArray.length(); i++) { 
    if(!cList.contains(jsonArray.getJSONObject(i).getString("standard"))){ 
     cList.add(jsonArray.getJSONObject(i).getString("standard")); 
     } 
    } 
0

обновления вашего итератор

if (jsonArray != null) { 
     for (int i = 0; i < jsonArray.length(); i++) { 
      String standard = jsonArray.getJSONObject(i).getString("standard"); 
      if(!cList.contains(standard)) 
       cList.add(standard); 
     } 
    } 
0

Использование содержит метод, если у вас нет заботы о чувствительности к регистру