从微调器获取值并根据该值更改文本视图

时间:2013-04-11 17:53:12

标签: android sqlite spinner

好的,这应该是直截了当的,但我遇到了困难。到目前为止,我已经有了这段代码。

    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是一个全局变量,它将微调器的值存储为String。

    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;
    }

这是基于我已经使用的代码,但基本上我想检查Spinner对我的数据库中的问题,如果它们匹配,我想将文本视图更改为答案。现在FAQ.SpinnerFAQ工作正常,但c.getString(iQuestion)总是显示为数据库中的最后一个值。此代码“result = result + c.getString(iAnswer)+”\ n“;”没有if语句就可以正常工作,所以我真的不明白为什么“c.getString(iQuestion)”存在问题。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

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

永远不要在Java中将字符串与==进行比较,始终使用equals()。请阅读:How do I compare strings in Java?并将每个字符串比较更改为:

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