基于android中以前的微调器选择填充微调器

基于android中以前的微调器选择填充微调器,android,web-services,sqlite,adt,android-spinner,Android,Web Services,Sqlite,Adt,Android Spinner,我不熟悉安卓系统的开发,我遇到了一个基于第一个微调器选择的下拉列表的情况,即。,考虑到在第一个SpLink中的一个例子,所有的状态数据都是使用DB帮助器类从Web服务中加载的,而在第一个旋转器中选择状态名时,我需要基于第一个旋转器选择项ID(StisteID而不是SpnEnter的选定项ID)填充第二个旋转器。from db,这意味着我需要从所选州中选择stateid,并希望根据州筛选地区。 状态表创建: 创建表状态(StateID INTEGER,StateName VARCHAR)地区表创建

我不熟悉安卓系统的开发,我遇到了一个基于第一个微调器选择的下拉列表的情况,即。,考虑到在第一个SpLink中的一个例子,所有的状态数据都是使用DB帮助器类从Web服务中加载的,而在第一个旋转器中选择状态名时,我需要基于第一个旋转器选择项ID(StisteID而不是SpnEnter的选定项ID)填充第二个旋转器。from db,这意味着我需要从所选州中选择stateid,并希望根据州筛选地区。 状态表创建:
创建表状态(StateID INTEGER,StateName VARCHAR)
地区表创建:
创建表分支(\u ID INTEGER主键,DistrictName VARCHAR,StateID INTEGER)

在本文中,我使用arraylist和spinner1加载州的数据。setOnItemSelectedListener函数加载了地区值,但这些值是根据州微调器中项目的位置加载的,而不是我需要根据分支表中的stateid进行过滤

这是获取所有状态的代码:

public ArrayList<HashMap<String, String>> getStatesData() {
    ArrayList aList = new ArrayList();
    try {
        Log.e("getStatesData", "Started");
        String selectQuery = "SELECT * FROM States";
        SQLiteDatabase database = this.getWritableDatabase();
        Cursor cursor = database.rawQuery(selectQuery, null);
        if (cursor.moveToFirst()) {
            do {
                HashMap<String, String> map = new HashMap<String, String>();
                map.put("StateID",
                        cursor.getString(cursor.getColumnIndex("StateID")));
                map.put("StateName", cursor.getString(cursor
                        .getColumnIndex("StateName")));
                aList.add(map);

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

    } catch (Exception e) {
        e.printStackTrace();
        Log.e("getStatesData", "Ended");
        return aList;
    }
}
public ArrayList getStatesData(){
ArrayList aList=新的ArrayList();
试一试{
Log.e(“getStatesData”、“Started”);
String selectQuery=“选择*来自状态”;
SQLiteDatabase=this.getWritableDatabase();
Cursor=database.rawQuery(selectQuery,null);
if(cursor.moveToFirst()){
做{
HashMap=newHashMap();
map.put(“StateID”,
cursor.getString(cursor.getColumnIndex(“StateID”);
map.put(“StateName”),cursor.getString(cursor
.getColumnIndex(“StateName”);
列表.添加(地图);
}while(cursor.moveToNext());
}
cursor.close();
回归主义者;
}捕获(例外e){
e、 printStackTrace();
Log.e(“getStatesData”、“Ended”);
回归主义者;
}
}
spinner1.setonitemselectedlistner事件:

spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> adapt, View v,
                int pos, long id) {
            // TODO Auto-generated method stub

            long spinstate=spinner_state.getSelectedItemId();
    branch_values=sDBController.getStateselectidData(spinstate);
    branch_name_ary.clear();
    for (int i = 0; i < branch_values.size(); i++) {
        String name=branch_values.get(i).get("DistrictName");
        String id=branch_values.get(i).get("StateID");
        branch_name_ary.add(name);
        Log.e("branchesbystates", branch_name_ary.toString());
    }
    ArrayAdapter<String> spinnerArrayAdapter1 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, branch_name_ary);
    spinnerArrayAdapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner_district.setAdapter(spinnerArrayAdapter1);
        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub

        }
    });
spinner1.setOnItemSelectedListener(新的OnItemSelectedListener(){
@凌驾
已选择公共视图(自适应视图自适应、视图v、,
内部位置,长id){
//TODO自动生成的方法存根
long spinstate=spinner\u state.getSelectedItemId();
branch_values=sDBController.getStateselectidData(spinstate);
分支机构名称。清除();
对于(int i=0;i
请提出一些解决方案,以获得基于州ID的地区,这可能有助于获得解决问题的想法


提前谢谢。

如果我是你,我会创建一个这样的状态

public class State {
private String id;
private String name;

public State(String id, String name) {
    this.id = id;
    this.name = name;
}

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

@Override
public String toString() {
    return name;
}
}

getStatesDate方法如下所示:

public List<State> getStatesData()
{
    List<State> states = new LinkedList<State>();
    try {
        Log.e("getStatesData", "Started");
        String selectQuery = "SELECT * FROM States";
        SQLiteDatabase database = this.getWritableDatabase();
        Cursor cursor = database.rawQuery(selectQuery, null);
        if (cursor.moveToFirst()) {
            do {
                HashMap<String, String> map = new HashMap<String, String>();
                String stateId = cursor.getString(cursor.getColumnIndex("StateID"));
                String stateName = cursor.getString(cursor.getColumnIndex("StateName"));
                states.add(new State(stateId, stateName));

            } while (cursor.moveToNext());
        }
        cursor.close();
    } catch (Exception e) {
        e.printStackTrace();
        Log.e("getStatesData", "Ended");
    }

    return states;
}
spinner1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            State state = (State) spinner1.getSelectedItem();

            String stateId = state.getId();
            String stateName = state.getName();

            //you are very assured that the id matches the name selected and you can proceed from there
        }
    });
int spinner = 0;
String bereichlink ="";
public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
    int spinnerId = getView(position, v, parent).getId();
    searchstring = sstr.getText().toString();
    switch (parent.getId()) {
        case R.id.REditText:
            if (position > 0) {
                spinner = position;
                Link = links[position];
                spinner2 = (Spinner) findViewById(R.id.sp_bereich);
                adapter2 = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item, Constants.bereich[position - 1]);
                spinner2.setAdapter(adapter2);
                adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                new FetchFeedTask().execute((Void) null);
                spinner2.setSelection(0);
            }
            break;
        case R.id.sp_bereich:
            if (position >= 0) {                
                bereichlink = Constants.bereich[spinner-1][position];
                new FetchFeedTask().execute((Void) null);
            }
            bereichlink = "";
            break;
    }
    if ((spinner > 0) && (position > 0)) {
         ...
public List getStatesData()
{
列表状态=新建LinkedList();
试一试{
Log.e(“getStatesData”、“Started”);
String selectQuery=“选择*来自状态”;
SQLiteDatabase=this.getWritableDatabase();
Cursor=database.rawQuery(selectQuery,null);
if(cursor.moveToFirst()){
做{
HashMap=newHashMap();
String stateId=cursor.getString(cursor.getColumnIndex(“stateId”);
字符串stateName=cursor.getString(cursor.getColumnIndex(“stateName”);
添加(新状态(stateId,stateName));
}while(cursor.moveToNext());
}
cursor.close();
}捕获(例外e){
e、 printStackTrace();
Log.e(“getStatesData”、“Ended”);
}
返回状态;
}
喷丝头1也会是这样的:

public List<State> getStatesData()
{
    List<State> states = new LinkedList<State>();
    try {
        Log.e("getStatesData", "Started");
        String selectQuery = "SELECT * FROM States";
        SQLiteDatabase database = this.getWritableDatabase();
        Cursor cursor = database.rawQuery(selectQuery, null);
        if (cursor.moveToFirst()) {
            do {
                HashMap<String, String> map = new HashMap<String, String>();
                String stateId = cursor.getString(cursor.getColumnIndex("StateID"));
                String stateName = cursor.getString(cursor.getColumnIndex("StateName"));
                states.add(new State(stateId, stateName));

            } while (cursor.moveToNext());
        }
        cursor.close();
    } catch (Exception e) {
        e.printStackTrace();
        Log.e("getStatesData", "Ended");
    }

    return states;
}
spinner1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            State state = (State) spinner1.getSelectedItem();

            String stateId = state.getId();
            String stateName = state.getName();

            //you are very assured that the id matches the name selected and you can proceed from there
        }
    });
int spinner = 0;
String bereichlink ="";
public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
    int spinnerId = getView(position, v, parent).getId();
    searchstring = sstr.getText().toString();
    switch (parent.getId()) {
        case R.id.REditText:
            if (position > 0) {
                spinner = position;
                Link = links[position];
                spinner2 = (Spinner) findViewById(R.id.sp_bereich);
                adapter2 = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item, Constants.bereich[position - 1]);
                spinner2.setAdapter(adapter2);
                adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                new FetchFeedTask().execute((Void) null);
                spinner2.setSelection(0);
            }
            break;
        case R.id.sp_bereich:
            if (position >= 0) {                
                bereichlink = Constants.bereich[spinner-1][position];
                new FetchFeedTask().execute((Void) null);
            }
            bereichlink = "";
            break;
    }
    if ((spinner > 0) && (position > 0)) {
         ...
spinner1.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共无效onItemClick(AdapterView AdapterView、View视图、int i、long l){
State State=(State)spinner1.getSelectedItem();
字符串stateId=state.getId();
字符串stateName=state.getName();
//您可以非常确信id与所选名称匹配,并且可以从那里继续
}
});
我希望有帮助。干杯

最好的选择是像这样使用“开关盒”:

public List<State> getStatesData()
{
    List<State> states = new LinkedList<State>();
    try {
        Log.e("getStatesData", "Started");
        String selectQuery = "SELECT * FROM States";
        SQLiteDatabase database = this.getWritableDatabase();
        Cursor cursor = database.rawQuery(selectQuery, null);
        if (cursor.moveToFirst()) {
            do {
                HashMap<String, String> map = new HashMap<String, String>();
                String stateId = cursor.getString(cursor.getColumnIndex("StateID"));
                String stateName = cursor.getString(cursor.getColumnIndex("StateName"));
                states.add(new State(stateId, stateName));

            } while (cursor.moveToNext());
        }
        cursor.close();
    } catch (Exception e) {
        e.printStackTrace();
        Log.e("getStatesData", "Ended");
    }

    return states;
}
spinner1.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            State state = (State) spinner1.getSelectedItem();

            String stateId = state.getId();
            String stateName = state.getName();

            //you are very assured that the id matches the name selected and you can proceed from there
        }
    });
int spinner = 0;
String bereichlink ="";
public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
    int spinnerId = getView(position, v, parent).getId();
    searchstring = sstr.getText().toString();
    switch (parent.getId()) {
        case R.id.REditText:
            if (position > 0) {
                spinner = position;
                Link = links[position];
                spinner2 = (Spinner) findViewById(R.id.sp_bereich);
                adapter2 = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_spinner_item, Constants.bereich[position - 1]);
                spinner2.setAdapter(adapter2);
                adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                new FetchFeedTask().execute((Void) null);
                spinner2.setSelection(0);
            }
            break;
        case R.id.sp_bereich:
            if (position >= 0) {                
                bereichlink = Constants.bereich[spinner-1][position];
                new FetchFeedTask().execute((Void) null);
            }
            bereichlink = "";
            break;
    }
    if ((spinner > 0) && (position > 0)) {
         ...
int微调器=0;
字符串bereichlink=“”;
已选择公共位置(AdapterView父视图、视图v、整型位置、长id){
int spinnerId=getView(位置,v,父项).getId();
searchstring=sstr.getText().toString();
开关(parent.getId()){
案例R.id.REditText:
如果(位置>0){
微调器=位置;
链接=链接[位置];
喷丝头2=(喷丝头)findViewById(R.id.sp_bereich);
adapter2=new ArrayAdapter(MainActivity.this,android.R.layout.simple\u spinner\u item,Constants.bereich[position-1]);
喷丝头2.设置适配器(适配器2);
adapter2.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
新建FetchFeedTask().execute((Void)null);
喷丝头2.5(0);
}
打破
案例R.id.sp_bereich:
如果(位置>=0){
bereichlink=常数。bereich[spinner-1][position];