Java 我正在尝试用数组中的值填充微调器。我的微调器在执行时没有显示下拉列表!这是我的密码
将我的代码放在这里..在类中创建了JSONArray“project”,并尝试将JSONArray中的元素放在Spinner中。但是Spinner没有显示下拉列表Java 我正在尝试用数组中的值填充微调器。我的微调器在执行时没有显示下拉列表!这是我的密码,java,android,android-arrayadapter,Java,Android,Android Arrayadapter,将我的代码放在这里..在类中创建了JSONArray“project”,并尝试将JSONArray中的元素放在Spinner中。但是Spinner没有显示下拉列表 public class MainActivity extends ActionBarActivity { Spinner practiceSpin; Spinner projectSpin; JSONObject projDet; JSONArray projArr; private f
public class MainActivity extends ActionBarActivity {
Spinner practiceSpin;
Spinner projectSpin;
JSONObject projDet;
JSONArray projArr;
private final static String JSON_DATA =
"{"
+ " \"project\": ["
+ " {"
+ " \"id\": \"1\","
+ " \"name\": \"xxxx\","
+ " },"
+ " {"
+ " \"id\": \"2\","
+ " \"name\": \"yyyy\","
+ " {"
+ " \"id\": \"3\","
+ " \"name\": \"zzzz\","
+ " {"
+ " \"id\": \"4\","
+ " \"name\": \"hhhh\","
+ " ]"
+ "}";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
projDet=new JSONObject(JSON_DATA);
projArr=projDet.getJSONArray(JSON_DATA);
} catch (JSONException e) {
e.printStackTrace();
}
practiceSpin=(Spinner) findViewById(R.id.spinnerPractice);
ArrayAdapter<CharSequence> ar= ArrayAdapter.createFromResource(this,R.array.practices,android.R.layout.simple_list_item_1);
ar.setDropDownViewResource(android.R.layout.simple_dropdown_item_1line);
practiceSpin.setAdapter(ar);
projectSpin=(Spinner) findViewById(R.id.spinnerProject);
ArrayAdapter<String> adapter_proj = new ArrayAdapter<String>(this,R.array.practices, android.R.layout.simple_spinner_item,projArr);
}
/我无法更正错误。请帮助/
构造函数ArrayAdapterMainActivity,int,int,JSONArray是
未定义错误/
因为ArrayAdapter将列表或数组作为数据源,但您正在尝试传递JSONArray
要显示来自JSONArray的数据,请首先从array到ArrayList获取所有值:
ArrayList<String> arrData=new ArrayList<String>();
for(int n = 0; n < projArr.length(); n++)
{
JSONObject object = projArr.getJSONObject(n);
arrData.add(object.optString("name"));
}
在适配器构造函数中使用arrData而不是projArr作为数据源
ArrayList<String> arrData=new ArrayList<String>();
for(int n = 0; n < projArr.length(); n++)
{
JSONObject object = projArr.getJSONObject(n);
arrData.add(object.optString("name"));
}