我有一个字符串数组,用来填充一个微调器对象。但是,我想为微调器的每个元素附加一个ID,这样当用户选择一个项目时,我就有了它的ID来保存到其他一些数据中。我该怎么做呢?
发布于 2011-04-26 22:59:19
你说的id是什么意思。可以使用ArrayAdapter填充微调器。选择item时,只需从适配器获取元素并保存所需的数据。
Spinner spinner = (Spinner) findViewById(R.id.spinner);
ArrayAdapter<MyObject> adapter = ... // initialize the adapter
adapter.setDropDownViewResource(android.R.layout.some_view);
spinner.setAdapter(adapter);以及当选择项时
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
MyObject selected = parent.getItemAtPosition(pos);
// save any data relevant with selected item
}如果您将数据存储在db中,则可以使用CursorAdapter和onItemSelected从光标中获取所选项目的id。
发布于 2013-12-31 15:49:48
创建一个类StringWithTag并使用来代替列表中的字符串名称,如下所示:-
public class StringWithTag {
public String string;
public Object tag;
public StringWithTag(String stringPart, Object tagPart) {
string = stringPart;
tag = tagPart;
}
@Override
public String toString() {
return string;
}
}在将项目添加到微调器部分中:-
List<StringWithTag> list = new ArrayList<StringWithTag>();
list.add(new StringWithTag("Oldman", "12345"));
list.add(new StringWithTag("Umpire", "987654"));
list.add(new StringWithTag("Squad", "ABCDEE"));
ArrayAdapter<StringWithTag> adap = new ArrayAdapter<StringWithTag> (this, android.R.layout.simple_spinner_item, list);
....
....在监听器中:-
public void onItemSelected(AdapterView<?> parant, View v, int pos, long id) {
StringWithTag s = (StringWithTag) parant.getItemAtPosition(pos);
Object tag = s.tag;
}瞧!}
发布于 2011-04-26 23:02:33
我不认为您可以将任意的ID附加到文本数组资源的元素上,如果您正在使用的话。
我认为附加此类ID的最简单方法是硬编码(如果使用静态文本资源)或从(数组中的字符串位置)->(主键)动态构建映射(如果在运行时获得字符串)。
编辑:另一方面,Mojo Risin有一个要点-你应该检查一下CursorAdapter API是否已经为你做了你需要的事情。
https://stackoverflow.com/questions/5792159
复制相似问题