【发布时间】:2017-03-07 04:04:15
【问题描述】:
我正在从下面的代码中填充微调器,并且它的工作完美。当用户从微调器中选择任何值时,我将 stateCodeId 保存在 sqlite 中。现在我想要的是,当用户再次访问时,我想显示已经保存在 sqlite 中的 ID 中的选定值。如何显示微调器中选择的值?
public void fillStateData() {
try {
State_data = new ArrayList<Map<String, String>>();
State_data.clear();
Cursor cursor_State = db.rawQuery("SELECT nSerialNo as _id,cCodeName FROM CodeMaster where nCtgId = 6", null);
int i = 0;
if (cursor_State.moveToFirst()) {
do {
Map<String, String> datanum = new HashMap<String, String>();
if (i == 0) {
datanum.put("nStateID", "0");
datanum.put("cStateName", "Select State");
State_data.add(datanum);
datanum = new HashMap<String, String>();
datanum.put("nStateID", cursor_State.getString(0));
datanum.put("cStateName", cursor_State.getString(1));
State_data.add(datanum);
} else {
datanum.put("nStateID", cursor_State.getString(0));
datanum.put("cStateName", cursor_State.getString(1));
State_data.add(datanum);
}
i += 1;
} while (cursor_State.moveToNext());
}
String[] fromwhere = {"nStateID", "cStateName"};
int[] viewswhere = {R.id.txtnStateID, R.id.txtcStateName};
StateAdapter = new SimpleAdapter(getActivity(), State_data, R.layout.state_list_template, fromwhere, viewswhere);
spnState.setAdapter(StateAdapter);
cursor_State.close();
spnState.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
TextView stateId = (TextView) view.findViewById(R.id.txtnStateID);
stateCodeId = stateId.getText().toString();
fillDistrictData(stateCodeId);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
像这样我从 sqlite 获取 ID。
Cursor c = db.rawQuery("SELECT nStateId from MemberMaster where nCustID ="+SesPMbrID+"", null);
c.moveToFirst();
String state = c.getString(0);
【问题讨论】:
-
首先您必须从数据库中获取 ID,然后将数据库中的 ID 与所有 ID 的列表相匹配。最后,当您在列表中找到 ID 时,请注意位置和用户 spinner.setSelectio(position);在商店数据库 ID 上设置微调器。
-
我收到此错误 - java.lang.IndexOutOfBoundsException: Invalid index 9, size is 5
-
这意味着您的数据库包含 5 个 ID,您正在搜索 9,它不在列表中。
-
我的清单中有 5 项。现在我为我的微调器有两个文本视图的自定义布局会发生什么。一个用于 id,第二个用于名称。我将可见性转到 textview 哪个商店 id。
-
9 也来自 sqlite,它是任何项目的 id。我想显示 id 为 9 的名称
标签: android sqlite spinner simpleadapter