Android 如何通过在微调器中选择其值来获取id?

Android 如何通过在微调器中选择其值来获取id?,android,android-emulator,android-sqlite,android-spinner,Android,Android Emulator,Android Sqlite,Android Spinner,我想获取微调器中所选值的id,该微调器的值是从Sqlite派生的 我在Sqlite中的表是 城市标识城市名称 8孟买 9新德里 10马德拉斯 11加尔各答 12班格罗尔 13艾哈迈达巴德 14斋浦尔 15昌迪加尔 16西姆拉 17勒克瑙 18帕特纳 19博帕尔 20那格布尔 我的数据库连接器代码是 public List<String> getCity(){ List<String> labels = new ArrayList<String>();

我想获取微调器中所选值的id,该微调器的值是从Sqlite派生的

我在Sqlite中的表是

城市标识城市名称

8孟买
9新德里
10马德拉斯
11加尔各答
12班格罗尔
13艾哈迈达巴德
14斋浦尔
15昌迪加尔
16西姆拉
17勒克瑙
18帕特纳
19博帕尔
20那格布尔

我的数据库连接器代码是

public List<String> getCity(){
    List<String> labels = new ArrayList<String>();

    String selectQuery = "SELECT  CITY_ID, CITY_NAME FROM city_list";

    Log.d("Destination Country Query", selectQuery);

    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);

    if (cursor.moveToFirst()) {
        do {                
            labels.add(cursor.getString(1));
        } while (cursor.moveToNext());
    }

    cursor.close();
    db.close();

    return labels;
}
公共列表getCity(){
列表标签=新的ArrayList();
String selectQuery=“从城市列表中选择城市标识、城市名称”;
Log.d(“目的国查询”,选择查询);
SQLiteDatabase db=this.getReadableDatabase();
Cursor Cursor=db.rawQuery(selectQuery,null);
if(cursor.moveToFirst()){
做{
labels.add(cursor.getString(1));
}while(cursor.moveToNext());
}
cursor.close();
db.close();
退货标签;
}
我的实现是

city = (Spinner) findViewById(R.id.city);
loadCityData();

private void loadCityData() {

    DatabaseConnector db = new DatabaseConnector(getApplicationContext());

    List<String> lables = db.getCity();

    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, lables);

    dataAdapter
            .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    city.setAdapter(dataAdapter);

}
city=(微调器)findviewbyd(R.id.city);
loadCityData();
私有void loadCityData(){
DatabaseConnector db=新的DatabaseConnector(getApplicationContext());
列表标签=db.getCity();
ArrayAdapter dataAdapter=新的ArrayAdapter(此,
android.R.layout.simple_微调器(项目、标签);
数据适配器
.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
setAdapter(dataAdapter);
}
现在,通过在微调器中选择城市。我想从SQlite表中获取id

有人能指导我实现这一目标吗

提前谢谢


关于,Dinesh

您正在设置
城市名称
,如
微调器
中的值。您将获得其位置,对于
城市id
,您可以将
微调器的值设置为
城市id
,然后您可以获得其位置和值,。。 或者您可以使用
city\u-nam
e,您可以映射其
city\u-id
值来获取其位置

假设对于位置
0
您将获得
孟买
,然后对于位置
0
设置
city\u id
8
。 像那样

  spinner.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            Log.i("cyberwalker", "item selected" + arg2);
            if (arg2 == 0) {
                city_id=8;
            } else if (arg2 == 1) {
                city_id=9;
            } else if (arg2 == 2) {
                city_id=10;
            }
                            ......

        }
spinner.setOnItemSelectedListener(新的OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView arg0、视图arg1、,
整数arg2,长arg3){
Log.i(“cyberwalker”,“选定项目”+arg2);
如果(arg2==0){
城市id=8;
}else if(arg2==1){
城市id=9;
}else if(arg2==2){
城市id=10;
}
......
}

同样,该代码也没有经过优化。

为Arraylist添加值

    final ArrayList<Devstatus> statusList = new ArrayList<Devstatus>();

    Devstatus tempstatus = new Devstatus();
    tempstatus.setDevStatusName("BOMBAY ");
    tempstatus.setDevStatusValue("8");

    Devstatus tempstatus1 = new Devstatus();
    tempstatus1.setDevStatusName(" NEW DELHI ");
    tempstatus1.setDevStatusValue("9");

    statusList.add(tempstatus);
    statusList.add(tempstatus1);

你想从spinnerHi获取所选值吗?我已经尝试过了。但它显示出错误。你能为我的问题连接器和实现修改上面的编码吗?嗨,Cyberwalker,谢谢你的提示。你能为我详细说明并提供示例吗?
    SpinnerAdapter stateAdaptor = new SpinnerAdapter(SettingActivity.this,statusList);
    status.setAdapter(stateAdaptor);
    status.setOnItemSelectedListener(new OnItemSelectedListener() {

        public void onItemSelected(AdapterView<?> arg0, View arg1,int position, long arg3) {
            changeStatus(statusList.get(position));
            selected = statusList.get(position).getDevStatusName();
        }

        public void onNothingSelected(AdapterView<?> arg0) {

        }
    });
 class SpinnerAdapter extends BaseAdapter {
    LayoutInflater mInflater;
    ArrayList<Devstatus> statusList;

    public SpinnerAdapter(Context context, ArrayList<Devstatus> countryList) {
        mInflater = LayoutInflater.from(context);
        this.statusList = countryList;
    }

    public int getCount() {
        return this.statusList.size();
    }

    public Devstatus getItem(int position) {
        return (Devstatus) this.statusList.get(position);
    }

    public long getItemId(int position) {
        return (position);
    }

    public View getView(final int position, View convertView,
            ViewGroup parent) {
        ViewHolder holder;

        Devstatus tempState = (Devstatus) this.statusList.get(position);

        if (convertView == null) {
            convertView = mInflater.inflate(R.layout.state, null);
            holder = new ViewHolder();
            holder.adtitle = (TextView) convertView.findViewById(R.id.tvstate);

            convertView.setTag(holder);

        } else {
            holder = (ViewHolder) convertView.getTag();

        }
        holder.adtitle.setText(tempState.getDevStatusName());
        return convertView;
    }

    class ViewHolder {
        TextView adtitle;

    }
}
public class Devstatus 
{
private String devStatusName;
private String devStatusValue;


public String getDevStatusName() 
{
    return devStatusName;
}

public void setDevStatusName(String devStatusName) 
{
    this.devStatusName = devStatusName;
}

public String getDevStatusValue() 
{
    return devStatusValue;
}

public void setDevStatusValue(String devStatusValue) 
{
    this.devStatusValue = devStatusValue;
}
}