2015-06-01 3 views
-1

Я хочу установить значения Json в список счетчиков. У меня есть данные:значения значений из массива json для счетчика на уровне приложения

JSONArray lang = jsonObject.getJSONArray("languages"); 

for (int i = 0; i < lang.length(); i++) { 
    String language = lang.getString(i); 
} 

Как я могу загрузить значения String в список счетчиков?

+0

с помощью адаптера ... серьезно, есть много учебников там ... – Selvin

ответ

1
ArrayAdapter<String> arrayAdapter = new ArrayAdapter(yourContext, android.R.layout.activity_list_item) 
arrayAdapter.addAll(langList); // you need to add your lang.getString(i) to an array 
yourSpinner.setAdapter(arrayAdapter); 

и voila!

+0

Но как передать эти ценности ... и принести в другой деятельности по одному.. ?? –

+0

Я тоже ответил на этот вопрос в своем ответе. – metzelder

0

Как я понимаю вашу проблему, у вас есть список записей, и вы хотите показать их в spinner в нескольких действиях. Для этого вы можете создать класс, расширяющий класс приложения и создающий список в этом классе.

как только вы получите ответ от вашего веб-набора данных api в списке класса приложения.

Теперь где вы хотите, чтобы отобразить данные в Spinner получить его из класса Application и сделать ваш кок

Ниже в примере -

public class MyApp extends Application{ 

    private static ArrayList<String> mDataArrayList; 

    public static ArrayList<String> getmDataArrayList() { 
     return mDataArrayList; 
    } 
    public static void setmDataArrayList(ArrayList<String> mDataArrayList) { 
     MyApp.mDataArrayList = mDataArrayList; 
    } 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
    } 

    } 

Обратитесь к Web API и анализировать данные, как вы код в ваш вопрос -

 ArrayList<String> mArrayList = new ArrayList<String>(); 
     for (int i = 0; i < lang.length(); i++) { 
      String language = lang.getString(i); 
      mArrayList.add(language); 
     } 
     //Set Application class list 
      MyApp.setmDataArrayList(mArrayList); 

Теперь, когда вы хотите, чтобы отобразить данные в любом классе, то получите список по телефону -

ArrayList<String> mArrayList = MyApp.getmDataArrayList(); 
//Code to display data in Spinner 

Надеюсь, это поможет вам.

И не забыл добавить его в манифесте приложения -

<application 
    android:allowBackup="true" 
    android:name=".MyApp" 
    ....> 
    .... 
    </application> 
0

Я предлагаю вам использовать класс активности Spinner для будущих использований. Вот пример вращатель класса активности (данные приемник и Displayer):

import java.io.Serializable; 
import java.util.ArrayList; 
import java.util.List; 

import android.app.Activity; 
import android.content.Intent; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemSelectedListener; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.Spinner; 
import android.widget.Toast; 

public class mySpinnerClass extends Activity implements 
     OnItemSelectedListener { 

    Spinner spinner; 

    int selectedValue; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.spinner); 
     selectedValue = -1; 

     Intent i = getIntent(); 
     dataSelector = i.getStringExtra("MessageText"); 

     // Spinner element 
     spinner = (Spinner) findViewById(R.id.mySpinner); 

     // Spinner click listener 
     spinner.setOnItemSelectedListener(this); 

     // Loading spinner data 
     loadSpinnerData(); 
    } 

    private void loadSpinnerData() { 

     // Spinner Drop down elements 
     List<String> lables = yourData.get(dataSelector); 

     // Creating adapter for spinner 
     ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, 
       android.R.layout.simple_spinner_item, lables); 

     // Drop down layout style - list view with radio button 
     dataAdapter 
       .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

     // attaching data adapter to spinner 
     spinner.setAdapter(dataAdapter); 
    } 


    public void onItemSelected(AdapterView<?> parent, View arg1, int position, long arg3) { 
     // TODO Auto-generated method stub 
     String label = parent.getItemAtPosition(position).toString(); 
     //get the label and do anything you want with it 
    } 

    public void onNothingSelected(AdapterView<?> arg0) { 
     // TODO Auto-generated method stub 

    } 

} 

В деятельности вызывающего абонента:

Intent i = new Intent(getApplicationContext(), mySpinnerClass.class); 
i.putExtra("MessageText",yourData); 
startActivity(i); 

Если вы хотите отправить непримитивные данные (в вашем примере, это список), вы должны использовать Serializable type во время отправки и получения. Следующая ссылка иллюстрирует эту технику также:

http://javatechig.com/android/pass-a-data-from-one-activity-to-another-in-android