首先要說的是,我到處尋找並找不到解決方案,但如果我重複某些操作,我很抱歉。 所以這是一種情況,我有一個android應用程序解析來自某個xml url的數據並在listview中顯示它。此外還有一個微調器填充了一些項目,所以我想從xml中篩選從微調器中選擇的變量並添加到列表視圖的數據。我創建了setOnItemSelectedListener,當我從微調框中選擇一些東西時,我會得到該值的Toast消息,但以後我不能使用它。這是代碼:Android微調器檢索值顯示爲烤麪包,但無法繼續使用?
public class profesorActivity extends ListActivity {
// All static variables
static final String URL = "http://cvele.net78.net/obavestenja1.xml";
// XML node keys
static final String KEY_OBAV = "obavestenja"; // parent node
static final String KEY_PROF = "profesor";
static final String KEY_PRE = "predmet";
static final String KEY_TXT = "tekst";
static final String KEY_VRE = "vreme";
Spinner spin;
ArrayAdapter<String> aa;
String[] items = { "item1","item2", "item3", "item4", "item5", "item6","item7"};
ArrayList<HashMap<String, String>> menuItems = new ArrayList<HashMap<String, String>>();
XMLParser parser = new XMLParser();
String xml = parser.getXmlFromUrl(URL); // getting XML
Document doc = parser.getDomElement(xml); // getting DOM element
Object string1;
NodeList nl = doc.getElementsByTagName(KEY_OBAV);
public void onCreate(Bundle savedInstanceState) {
getWindow().requestFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
super.onCreate(savedInstanceState);
setContentView(R.layout.profesor);
spin=(Spinner)findViewById(R.id.spinner);
aa = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,items);
aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spin.setAdapter(aa);
spin.setOnItemSelectedListener(new OnItemSelectedListener(){
public void onItemSelected(AdapterView<?> parent, View view, int position, long id){
string1=spin.getSelectedItem().toString();
Toast.makeText(getBaseContext(), "Selected:" + string1.toString(),Toast.LENGTH_LONG).show();
}
public void onNothingSelected(AdapterView<?> parent) {
Toast.makeText(getBaseContext(), "Spinner1: unselected",Toast.LENGTH_LONG).show();
}
});
NodeList nl = doc.getElementsByTagName(KEY_OBAV);
// looping through all item nodes <item>
for (int i = 0; i < nl.getLength(); i++) {
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
Element e = (Element) nl.item(i);
// adding each child node to HashMap key => value
map.put(KEY_PROF, parser.getValue(e,KEY_PROF));
map.put(KEY_PRE, parser.getValue(e, KEY_PRE));
map.put(KEY_TXT, parser.getValue(e, KEY_TXT));
map.put(KEY_VRE, parser.getValue(e, KEY_VRE));
if((parser.getValue(e, KEY_PROF)).equals(string1.toString()))
menuItems.add(map);
else
Toast.makeText(getBaseContext(), "nothing", Toast.LENGTH_LONG).show();
}
// Adding menuItems to ListView
ListAdapter adapter = new SimpleAdapter(this, menuItems,R.layout.list_item, new String[] { KEY_PROF, KEY_PRE, KEY_TXT, KEY_VRE }, new int[] {R.id.profesor,R.id.predmet, R.id.tekst, R.id.vreme});
setListAdapter(adapter);
更確切地說,當我從微調選擇我想要的東西,在可變STRING1, 比表示,正如我以前傷心,祝酒(Toast.makeText(getBaseContext(), "Selected:" + string1.toString(),Toast.LENGTH_LONG).show();
)每次我選擇一次它顯示的是spinner的內容,但是對於循環string1沒有用處,我不能用它來比較那個變量if((parser.getValue(e, KEY_PROF)).equals(string1.toString()))
,但是當我比較一個單詞if((parser.getValue(e, KEY_PROF)).equals("test"))
時它可以工作,並且它可以與第一個默認值價值在微調。因此,改變選定的值不會改變偵聽器外部的變量string1的狀態。我嘗試了很多其他的方式來保存微調選定的項目作爲字符串,但沒有運氣。我做錯了什麼,我希望我描述了很好的問題,如果我不請求,我打破了我的思考和搜索網絡的頭。謝謝你。
是的,非常感謝,它正在工作,我只是做你悲傷的事,放在聽衆更新列表裏,再次感謝你。你救了我:)一切順利! – user1683541