2015-01-12 148 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);