2015-01-12 140 views
1

我发现这个奇妙的JSON解析为tutorial为Android,因为我对这个领域相当新,我想问我怎么可以用给定的数据填充微调。当用户点击该名称时,其余的用户将加载,然后当用户选择一个名称时,它必须保持活动状态。任何帮助将大大appriciated!用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对象的列表。

之前你的for循环,执行以下操作:

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

而且里面的for循环中,名称添加到这个列表:

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

然后创建一个绑定列表中的ArrayAdapter对象微调。

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);