2015-01-12 2 views
1

Я нашел этот замечательный JSON Parsing tutorial для Android, и так как я довольно новичок в этой области, я хотел бы спросить, как я могу заполнить счетчик данными. Когда пользователь нажимает на имя, остальные будут загружаться, а затем снова, когда пользователь его выбирает, он должен оставаться активным. Любая помощь будет много appriciated !!!Population Spinner with JSON

public class MainActivity extends Activity { 

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

     // we will using AsyncTask during parsing 
     new AsyncTaskParseJson().execute(); 
    } 

    // you can make this class as another java file so it will be separated from your main activity. 
    public class AsyncTaskParseJson extends AsyncTask<String, String, String> { 

     final String TAG = "AsyncTaskParseJson.java"; 

     // set your json string url here 
     String yourJsonStringUrl = "http://demo.codeofaninja.com/tutorials/json-example-with-php/index.php"; 

     // contacts JSONArray 
     JSONArray dataJsonArr = null; 

     @Override 
     protected void onPreExecute() {} 

     @Override 
     protected String doInBackground(String... arg0) { 

      try { 

       // instantiate our json parser 
       JsonParser jParser = new JsonParser(); 

       // get json string from url 
       JSONObject json = jParser.getJSONFromUrl(yourJsonStringUrl); 

       // get the array of users 
       dataJsonArr = json.getJSONArray("Users"); 

       // loop through all users 
       for (int i = 0; i < dataJsonArr.length(); i++) { 

        JSONObject c = dataJsonArr.getJSONObject(i); 

        // Storing each json item in variable 
        String firstname = c.getString("firstname"); 
        String lastname = c.getString("lastname"); 
        String username = c.getString("username"); 

        // show the values in our logcat 
        Log.e(TAG, "firstname: " + firstname 
          + ", lastname: " + lastname 
          + ", username: " + username); 

       } 

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

      return null; 
     } 

     @Override 
     protected void onPostExecute(String strFromDoInBg) {} 
    } 
} 

ответ

0

Spinner использует список объектов для обслуживания данных. Поэтому у вас должен быть резервный список для вашего объекта Spinner.

Перед ваш цикл, выполните следующие действия:

List<String> namesList = new ArrayList<String>(); 

И внутри вашей цикл, добавить имена в этот список:

//I'm assuming you are going to display only the first name 
namesList.add(firstName); 

Затем создать объект ArrayAdapter, который связывает список Spinner.

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, namesList); 
yourSpinner.setAdapter(adapter); 
0

создать список из JSON такой этот

List<String> list = new ArrayList<String>(); 
list.add(json element); 
list.add(json element); 
list.add(json element); 


ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, 
    android.R.layout.simple_spinner_item, list); 
spinner.setAdapter(dataAdapter); 
1

Спасибо, ребята за вашу помощь, но реальное решение лежит следующий Pice кода, который должен быть добавлен в OnPostExecute():

Spinner yourSpinner= (Spinner) findViewById(R.id.yourSpinner); 
 

 
ArrayAdapter<String> adapter = new ArrayAdapter<String>(<YourActivityNAme>.this, android.R.layout.simple_spinner_item, namesList); 
 
yourSpinner.setAdapter(adapter);