android微调器项单击文本更改

android微调器项单击文本更改,android,Android,我是android领域的新手,请帮帮我 我有两个字符串数组,在adapter的帮助下,从一个数组中得到spinner下拉视图。问题是,当我单击下拉列表时,我必须从第二个数组填充相同位置的值。我粘贴我的代码。请帮帮我 代码: class programList extends AsyncTask<String, Long, String> { @Override protected String doInBackground(String... arg0) {

我是android领域的新手,请帮帮我

我有两个字符串数组,在adapter的帮助下,从一个数组中得到spinner下拉视图。问题是,当我单击下拉列表时,我必须从第二个数组填充相同位置的值。我粘贴我的代码。请帮帮我

代码:

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的值引起的。谢谢您的建议