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)」に問題がある理由がよくわかりません。どんな助けでも大歓迎です。

4

1 に答える 1

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

==文字列をJavaと比較しないでください。常に を使用してequals()ください。読んでください: Java で文字列を比較するにはどうすればよいですか? すべての文字列比較を次のように変更します。

if(FAQ.SpinnerFAQ.equals(c.getString(iQuestion)))
于 2013-04-11T17:58:33.137 に答える