Android 如何通过在微调器中选择其值来获取id?
我想获取微调器中所选值的id,该微调器的值是从Sqlite派生的 我在Sqlite中的表是 城市标识城市名称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>();
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;
}
}