2017-06-13 83 views
0

我一直在尝试进入android/java编程,我一直在理解如何正确获取此json的值并将其解析为选项以在微调器中进行选择。解析简单的json到微调项

我的JSON是这样的:

["Result1","Result2","Result3"] 

我当前的代码是这样的:

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

     RequestQueue queue = Volley.newRequestQueue(this); 
     String url = "https://example.com/jsonfile.json"; 

     StringRequest stringRequest = new StringRequest(Request.Method.GET, url,new Response.Listener<String>() { 
     @Override 
     public void onResponse(String response) { 
      //Do something with response 
     } 
    }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      System.out.println(error.toString()); 
     } 
    }); 

    queue.add(stringRequest); 
} 

会是什么让这些值(结果1,结果2,Result3等)到最简单的方法spinner.entries?

在此先感谢

回答

1

试试这个:

myString.replace("\"]",""); 
myString.replace("[\"",""); 

List<String> myList = new ArrayList<String>(Arrays.asList(s.split("\",\""))); 


ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(varRoot, android.R.layout.simple_spinner_item, myList); 

spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // The drop down vieww 

mySpinner.setAdapter(spinnerArrayAdapter); 
+0

我不得不做一些改变,所以它不会有“在第一个和最后一个记录上,但这是为我做的。 – Bart

+0

哦,是的,我刚刚意识到前两行不起作用(现在编辑为其他人看着这个),但很高兴你解决了它! :) –

1

按我的知识,你在错误的方式发送JSON数据。 如果你想发送一个数组,你必须放置一个jsonArray对象来响应该名称来访问该jsonArray。

“汽车”: “福特”, “宝马”, “菲亚特”]

在这里,我们在JsonArray的名称为 “轿车” 送3车名。

对于访问这些项: -

for (i in myObj.cars) { 

    carsArray += myObj.cars[i]; 
} 
0
@Override 
    public void onResponse(String response) { 
     //Do something with response 
     JSONArray jsonArray = new JSONArray(response); 
     for (int i = 0; i < array.length(); i++) { 
      array.put(jsonArray.getString(i)); 
     } 
    } 

添加此对您的活动的OnCreate()梅托德

ArrayAdapter<CharSequence> adapter = 
ArrayAdapter.createFromResource(this, array, 
android.R.layout.simple_spinner_item); 
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
spinner.setAdapter(adapter); 

,并把它

ArrayList<String> array = new ArrayList<String>(); 
+0

“错误的第二个参数类型。找到'java.util.ArrayList ',需要'int'” 我在做什么错?我应该使用不同版本的ArrayList <>? (ArrayAdapter.createFromResource错误) – Bart

0

你好尝试这个如果可能有帮助

public class MainActivity extends AppCompatActivity { 
    Button btnCall; 
    final List<String> reviewList = new ArrayList<>(); 
    List<String>resultList=new ArrayList<>(); 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     btnCall=(Button)findViewById(R.id.btnCall); 
     final String jArrStr="[\"Result1\",\"Result2\",\"Result3\"]"; 

     btnCall.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       try { 
        JSONArray jArry=new JSONArray(jArrStr); 
        for (int i = 0; i < jArry.length(); i++) { 
         String strArr=jArry.getString(0); 
         resultList.add(jArry.getString(i)); 
        } 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } 
     }); 

    } 



}