2013-04-11 38 views
0

好的,這應該是直截了當的,但我有困難。到目前爲止,我有這個代碼。從微調器獲取價值,並根據該值更改文本視圖

public void onItemSelected(AdapterView<?> parent, View view, int position, 
     long id) { 
     // On selecting a spinner item 

     SpinnerFAQ = parent.getItemAtPosition(position).toString(); 
     // Showing selected spinner item 
     Toast.makeText(parent.getContext(), "You selected: " + SpinnerFAQ, 
      Toast.LENGTH_LONG).show(); 

     TextView tv = (TextView) findViewById(R.id.faq_answer); 
     ExerciseData question = new ExerciseData(this); 
     question.open(); 
     String answer = question.getFaqAnswer(); 
     question.close(); 
     tv.setText(answer); 

    } 

SpinnerFAQ是一個全局變量,它將微調器的值存儲爲字符串。

public String getFaqAnswer() { 
     // TODO Auto-generated method stub 
     String[] columns = new String[] { FAQ_ROWID, FAQ_QUESTION, FAQ_ANSWER}; 
     Cursor c = ourDatabase.query(DATABASE_TABLE2, columns, null, null, null, null, null); 
     String result = ""; 

     int iRow = c.getColumnIndex(FAQ_ROWID); 
     int iQuestion = c.getColumnIndex(FAQ_QUESTION); 
     int iAnswer = c.getColumnIndex(FAQ_ANSWER); 

     //c.getString(iRow) + " " + 

     for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) 
     { 
      if(FAQ.SpinnerFAQ == c.getString(iQuestion)) 
      { 
       result = result + c.getString(iAnswer) + "\n"; 
       break; 
      } 
     } 

     return result; 
    } 

這是基於代碼我已經使用,但基本上我要檢查的微調對問題在我的數據庫,如果他們匹配我想改變文本查看答案。現在FAQ.SpinnerFAQ工作正常,但c.getString(iQuestion)總是顯示爲數據庫中的最後一個值。此代碼「result = result + c.getString(iAnswer)+」\ n「;」沒有if語句就可以正常工作,所以我不太明白爲什麼「c.getString(iQuestion)」有問題。任何幫助將不勝感激。

回答

1
if(FAQ.SpinnerFAQ == c.getString(iQuestion)) 

決不==比較字符串在Java中,總是使用equals()。請閱讀:How do I compare strings in Java?並改變每個字符串比較:

if(FAQ.SpinnerFAQ.equals(c.getString(iQuestion))) 
+0

+1瞭解到這個硬盤的方式自己 – 2013-04-11 17:59:53

+0

謝謝!我完全忘了:( – Kazuk 2013-04-11 18:12:54