【问题标题】:Second spinner not loading based on previous spinner from sqlite第二个微调器未加载基于来自 sqlite 的先前微调器
【发布时间】:2016-10-05 08:38:30
【问题描述】:

我正在从 sqlite 填充两个微调器。现在我想要的是,当我的活动被创建时,所有状态都填充在spnState 中。但是当我从微调器中选择任何状态时,我想在spnDistrict 中从 sqlite 绑定 District。当我在该地区列表未显示在地区微调器中它只显示“选择地区”之后选择州时,我遇到了问题。我怎样才能做到这一点。

public void SpinnerValue(){
    /*-----------------------Fill State start here----------------------------*/

            try {
                ArrayList<String> state_array = new ArrayList<String>();
                state_array.add("Select State");
                Cursor cursor_State = db.rawQuery("SELECT nSerialNo as _id,cCodeName FROM CodeMaster where nCtgId = 6", null);


                if (cursor_State.moveToFirst()) {
                    do {
                        //assing values
                        String stateID = cursor_State.getString(0);
                        String stateName = cursor_State.getString(1);
                        stateData = stateName;
                        state_array.add(stateData);


                    } while (cursor_State.moveToNext());
                }
                ArrayAdapter my_Adapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, state_array);
                spnState.setAdapter(my_Adapter);
                cursor_State.close();
                spnState.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                    @Override
                    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

                        state = spnState.getSelectedItem().toString();

                        Cursor cursor = db.rawQuery("SELECT nSerialNo FROM CodeMaster where cCodeName = '" + state + "'", null);

                        if (cursor.moveToFirst()) {
                            do {
                                //assing values
                                stateCodeId = cursor.getString(0);

                            } while (cursor.moveToNext());
                        }
                        cursor.close();
                    }

                    @Override
                    public void onNothingSelected(AdapterView<?> parent) {

                    }


                });
            } catch (Exception e) {

                e.printStackTrace();

            }

            /*-----------------------Fill District start here----------------------------*/

            try {
                ArrayList<String> district_array = new ArrayList<String>();
                district_array.add("Select District");
                Cursor cursor_District = db.rawQuery("SELECT nSerialNo as _id,cCodeName FROM CodeMaster where nParentSerialNo = '"+stateCodeId+"'", null);


                if (cursor_District.moveToFirst()) {
                    do {
                        //assing values
                        String districtID = cursor_District.getString(0);
                        String districtName = cursor_District.getString(1);
                        districtData = districtName;
                        district_array.add(districtData);


                    } while (cursor_District.moveToNext());
                }
                ArrayAdapter district_Adapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, district_array);
                spnDistrict.setAdapter(district_Adapter);
                cursor_District.close();
                spnDistrict.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                    @Override
                    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

                        district = spnDistrict.getSelectedItem().toString();

                        Cursor cursor = db.rawQuery("SELECT nSerialNo FROM CodeMaster where cCodeName = '" + district + "'", null);

                        if (cursor.moveToFirst()) {
                            do {
                                //assing values
                                districtCodeId = cursor.getString(0);

                            } while (cursor.moveToNext());
                        }
                        cursor.close();

                    }

                    @Override
                    public void onNothingSelected(AdapterView<?> parent) {

                    }


                });
            } catch (Exception e) {

                e.printStackTrace();

            }
}

【问题讨论】:

  • 你把所有这些代码放在哪里了?以一种简单的方法或您是如何管理的?为此放置整个代码
  • 我把这段代码放在函数中,然后在 onCreate 中调用那个函数。
  • 整个代码或区你有单独的?
  • 把你的日志放在这里。
  • 检查我的答案,它会帮助你

标签: android sqlite spinner


【解决方案1】:

我已经检查了您的代码,并且您正在一个简单的方法中设置所有值,因此它不会使用 stateId 来获取区域,因此只需应用以下两种方法并首先调用 onCreate 方法来解决您的问题,

在 onCreate() 方法中调用下面的方法

  // In onCreate() method call below method
  fillStateData();

  public void fillStateData()
  {
     try {
           ArrayList<String> state_array = new ArrayList<String>();
           state_array.add("Select State");
           Cursor cursor_State = db.rawQuery("SELECT nSerialNo as _id,cCodeName FROM CodeMaster where nCtgId = 6", null);


           if (cursor_State.moveToFirst()) 
           {
               do {
                    //assing values
                    String stateID = cursor_State.getString(0);
                    String stateName = cursor_State.getString(1);
                    stateData = stateName;
                    state_array.add(stateData);
                } while (cursor_State.moveToNext());
            }
            ArrayAdapter my_Adapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, state_array);
            spnState.setAdapter(my_Adapter);
            cursor_State.close();
            spnState.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                @Override
                public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

                    state = spnState.getSelectedItem().toString();

                    Cursor cursor = db.rawQuery("SELECT nSerialNo FROM CodeMaster where cCodeName = '" + state + "'", null);

                    if (cursor.moveToFirst()) {                        
                            stateCodeId = cursor.getString(0);
                    }
                    cursor.close();

                   fillDistrictData(stateCodeId);
                }

                @Override
                public void onNothingSelected(AdapterView<?> parent) {

                }
            });
        } catch (Exception e) {

            e.printStackTrace();

        }
   }






public void fillDistrictData(String stateCodeId)
{
        try {
                ArrayList<String> district_array = new ArrayList<String>();
                district_array.add("Select District");
                Cursor cursor_District = db.rawQuery("SELECT nSerialNo as _id,cCodeName FROM CodeMaster where nParentSerialNo = '"+stateCodeId+"'", null);


                if (cursor_District.moveToFirst()) {
                    do {
                        //assing values
                        String districtID = cursor_District.getString(0);
                        String districtName = cursor_District.getString(1);
                        districtData = districtName;
                        district_array.add(districtData);


                    } while (cursor_District.moveToNext());
                }
                ArrayAdapter district_Adapter = new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, district_array);
                spnDistrict.setAdapter(district_Adapter);
                cursor_District.close();
                spnDistrict.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                    @Override
                    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

                        district = spnDistrict.getSelectedItem().toString();

                        Cursor cursor = db.rawQuery("SELECT nSerialNo FROM CodeMaster where cCodeName = '" + district + "'", null);

                        if (cursor.moveToFirst()) {
                            do {
                                //assing values
                                districtCodeId = cursor.getString(0);

                            } while (cursor.moveToNext());
                        }
                        cursor.close();

                    }

                    @Override
                    public void onNothingSelected(AdapterView<?> parent) {

                    }


                });
            } catch (Exception e) {

                e.printStackTrace();

            }

   }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-09
    • 2016-01-22
    • 1970-01-01
    • 2016-06-12
    • 1970-01-01
    • 1970-01-01
    • 2018-06-07
    • 1970-01-01
    相关资源
    最近更新 更多