如何使用 SimpleAdapter 在微调器中设置选择?
Posted
技术标签:
【中文标题】如何使用 SimpleAdapter 在微调器中设置选择?【英文标题】:How to set selection in spinner with SimpleAdapter? 【发布时间】: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 的名称 【参考方案1】:使用
spinner.setSelection(position);
【讨论】:
感谢 Francois L。我正在填充来自 sqlite 的两列。 ID 列是隐藏的,只显示名称。我在 sqlite 中保存 id 并再次检索保存的 id。现在我想显示从 id 中选择的项目。以上是关于如何使用 SimpleAdapter 在微调器中设置选择?的主要内容,如果未能解决你的问题,请参考以下文章
Android - 如何在一个活动中禁用多个微调器的特定项目