我对android相当新,我只用了两个月左右,所以请好好=)由于String []项目,我得到字符串结果的错误需要填充阵列适配器适配器。将json数组数据填充到android动态微调器中
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_select_class);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
/**dropdown start**/
populatedata();
spinnercall(result);
/**dropdown end**/
}
private void spinnercall(result) {
Spinner dynamicSpinner = (Spinner) findViewById(R.id.dynamic_spinner);
//String[] items = new String[] { "Chai Latte", "Green Tea", "Black Tea" };
String items = result;
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, items);
dynamicSpinner.setAdapter(adapter);
dynamicSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Log.v("item", (String) parent.getItemAtPosition(position));
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
});
}
private String populatedata() {
try{
SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", MODE_PRIVATE);
String userid =pref.getString("userid", "null");
String link="selectclass.php";
String data = URLEncoder.encode("id", "UTF-8") + "=" + URLEncoder.encode(userid, "UTF-8");
URL url = new URL(link);
URLConnection conn = url.openConnection();
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
wr.write(data);
wr.flush();
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
StringBuilder sb = new StringBuilder();
String line = null;
// Read Server Response
while((line = reader.readLine()) != null)
{
sb.append(line);
break;
}
result = sb.toString();
return result;
}
catch(Exception e){
String errorno;
errorno = ("Exception: " + e.getMessage());
Toast.makeText(getApplicationContext(), errorno, Toast.LENGTH_SHORT).show();
}
}
这是更清晰的问题我selectclass.php代码
$sql = "SELECT subejct_id, subject_name FROM class_schedule where subject_lec = '$id'";
$res = $conn->query($sql);
$result = array();
if ($res->num_rows > 0) {
// output data of each row
while($row = $res->fetch_array()){
array_push($result, array('subject_id'=>$row[0], 'subject_name'=>$row[1]));
echo json_encode(array("result"=>$result));
}
} else {
echo "fail";
}
解释,我所遇到的问题是在
// Read Server Response
while((line = reader.readLine()) != null)
{
sb.append(line);
break;
}
result = sb.toString();
return result;
}
和
//String[] items = new String[] { "Chai Latte", "Green Tea", "Black Tea" };
String items = result;
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, items);
而/ /完美的作品,但我不想哈编码数组。
从我的理解你是下载JSON并且想要添加值到ArrayAdapter,但项目不是一个数组。你所要做的就是解析JSON响应。有一个不错的[阅读](http://crunchify.com/how-to-read-json-object-from-file-in-java/)。 – Abbas
ArrayAdapters将接受数组和集合。我看到你传递了一个字符串,这是行不通的。 – SripadRaj