android微调器项单击文本更改
我是android领域的新手,请帮帮我 我有两个字符串数组,在adapter的帮助下,从一个数组中得到spinner下拉视图。问题是,当我单击下拉列表时,我必须从第二个数组填充相同位置的值。我粘贴我的代码。请帮帮我 代码:android微调器项单击文本更改,android,Android,我是android领域的新手,请帮帮我 我有两个字符串数组,在adapter的帮助下,从一个数组中得到spinner下拉视图。问题是,当我单击下拉列表时,我必须从第二个数组填充相同位置的值。我粘贴我的代码。请帮帮我 代码: class programList extends AsyncTask<String, Long, String> { @Override protected String doInBackground(String... arg0) {
class programList extends AsyncTask<String, Long, String> {
@Override
protected String doInBackground(String... arg0) {
// TODO Auto-generated method stub
String url = "http://mydomain.com/app/getdata.php?type=program_list&id="
+ surveyId;
String output = null;
JSONParserList Jparser = new JSONParserList();
output = Jparser.getJSONFromUrl(url);
return output;
}
@Override
protected void onPostExecute(String output) {
// TODO Auto-generated method stub
Log.e("JSONRESPONSE", output);
try {
JSONObject jObject = new JSONObject(output);
JSONArray OUTPUT = jObject.getJSONArray("OUTPUT");
String[] allStates = new String[OUTPUT.length()+1];
String[] allDistrics = new String[OUTPUT.length()];
allStates[0] = "Select Program";
for (int i = 0; i < OUTPUT.length(); i++) {
JSONObject eachProgram = OUTPUT.getJSONObject(i);
String adb = eachProgram.getString("adp");
String district = eachProgram.getString("district");
String location = eachProgram.getString("location");
String p_id = eachProgram.getString("p_id");
ProgramList programlist = new ProgramList();
programlist.setAdp(adb);
programlist.setDistrict(district);
programlist.setLocation(location);
programlist.setP_id(p_id);
// programlist.setAdpList(adb);
Toast.makeText(getApplicationContext(),
"id: " + programlist.getP_id(), Toast.LENGTH_LONG).show();
programList.add(programlist);
allStates[i+1] = adb;
allDistrics[i] = district;
}
// programDropDown();
Spinner sprogram = (Spinner) findViewById(R.id.spinner1);
ArrayAdapter<String> adapterstate = new ArrayAdapter<String>(
startSurvey.this, android.R.layout.simple_spinner_item,
allStates);
sprogram.setAdapter(adapterstate);
sprogram.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapter, View v,
int position, long id) {
// TODO Auto-generated method stub
String program = adapter.getItemAtPosition(position).toString();
// long id1 = adapter.getId();
**String d = allDistrics[position-1];**
// Showing selected spinner item
Toast.makeText(getApplicationContext(),
"Program position: " + position, Toast.LENGTH_LONG).show();
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
// adapter.notifyDataSetChanged();
} catch (JSONException e) {
e.printStackTrace();
}
}
}
class programList扩展了异步任务{
@凌驾
受保护的字符串doInBackground(字符串…arg0){
//TODO自动生成的方法存根
字符串url=”http://mydomain.com/app/getdata.php?type=program_list&id="
+调查;
字符串输出=null;
JSONParserList Jparser=新的JSONParserList();
output=Jparser.getJSONFromUrl(url);
返回输出;
}
@凌驾
受保护的void onPostExecute(字符串输出){
//TODO自动生成的方法存根
Log.e(“JSONRESPONSE”,输出);
试一试{
JSONObject jObject=新的JSONObject(输出);
JSONArray输出=jObject.getJSONArray(“输出”);
String[]allStates=新字符串[OUTPUT.length()+1];
String[]allDistrics=新字符串[OUTPUT.length()];
所有状态[0]=“选择程序”;
for(int i=0;i
我的错误是在星号位置给出的所有地区在该范围内都不可用,而且当你发布这样的问题时,你需要包括实际的日志cat错误 编辑 实际上,变量可用可能是您的问题,但我认为位置是零索引,就像数组一样,因此也可能是一个问题:位置-1可以=-1,并且超出范围
要修正地区变量的范围,可以使用final关键字
final String[]地区…
我已经使用了final关键字,但仍然无法解决问题。对于位置-1:当我获取数组allStates时,我在第0个位置上给出了一个静态值,因此该值的其余位置是从第1个位置开始的。但是我的allDistrics数组,我的id是从第0个位置插入的。因此,我使用位置-1获取Destrict的值。您还没有发布日志cat错误,没有它,任何人都可能解决它。谢谢Nick。我解决了这个问题。这个问题是由于位置-1的值引起的。谢谢您的建议