contentEquals不起作用

时间:2015-03-18 22:32:07

标签: android

我想比较两个字符串。

s1 - 用户输入(字符串)和

s2 - dbHelper.getdata(s1)(String),搜索s1中的文本是否在数据库中

我的代码工作正常但我注意到一些奇怪的事情:

  1. 即使单词在数据库中,也不在listview中添加单词/用户输入(s1) - (我不想要这个)但是每当单词不在时我的数据库给了我想要的祝酒词。 (我使用此代码)。
  2. 
    
    public void viewWord(View view) {
            s1 = text.getText().toString();
            s2 = dbHelper.getData(s1);
            newData = text.getText().toString();
            s1.trim();
            s2.trim();
    
            if (s1.isEmpty()) {
              Toast.makeText(getApplicationContext(), "Tap tiles to form a word.", Toast.LENGTH_SHORT).show();
            }
    
            //check if s1 == s2 
            if (s1.contentEquals(s2)) {
              Toast.makeText(getApplicationContext(), "Word Found", Toast.LENGTH_SHORT).show();
    
                if (!myList.contains(newData)) { // No duplicate entry
    
                  //display score
                  calculate();
                  adapter = (ArrayAdapter) wordList.getAdapter();
                  adapter.add((String) newData);
                  adapter.notifyDataSetChanged();
    
                }
            } else {
    
                  //check if s1 is not equal to s2
                  Toast.makeText(getApplicationContext(), "Word not found. Try a new one.", Toast.LENGTH_SHORT).show();
              }
    
    
    



    2。当我使用下面的代码时添加单词,我希望在单词不在数据库中时关闭应用程序。

    
    
    public void viewWord(View view) {
        s1 = text.getText().toString();
        s2 = dbHelper.getData(s1);
        newData = text.getText().toString();
        s1.trim();
        s2.trim();
    
        if (s1.isEmpty()) {
          Toast.makeText(getApplicationContext(), "Tap tiles to form a word.", Toast.LENGTH_SHORT).show();
        }
    
            //check if s1 is not equal to s2 
    
            if (!s1.contentEquals(s2)) {
              Toast.makeText(getApplicationContext(), "Word Found", Toast.LENGTH_SHORT).show();
    
              if (!myList.contains(newData)) { // No duplicate entry
                //display score
                calculate();
              adapter = (ArrayAdapter) wordList.getAdapter();
              adapter.add((String) newData);
              adapter.notifyDataSetChanged();
    
              }
             } else {
    
                  //check if s1 equal to s2
    
                  Toast.makeText(getApplicationContext(), "Word not found. Try a new one.", Toast.LENGTH_SHORT).show();
                }
    
    
    



    我想通过这个方式: 如果用户输入(s1)在数据库中(s2),则将用户输入添加到Listview。就像:

    if(s1==s2){ //add user input to listview)}
    

    如果用户输入(s1)不在数据库中,那么只需显示吐司,而不是像我现在所关注的那样关闭应用程序。它像:

    if(s1!=s2){ //show toast )}
    

    DBHelper

    
    
    public String getData(String word)
        {
            SQLiteDatabase db = helper.getWritableDatabase();
            String[] columns={DBHelper.WORD, DBHelper.SCORE};
            Cursor cursor=db.query(DBHelper.TABLE_NAME, columns, DBHelper.WORD+ "= '"+word+"'", null, null, null, null);
            StringBuffer buffer = new StringBuffer();
            while(cursor.moveToNext())
            {
                int index1 = cursor.getColumnIndex(DBHelper.WORD);
                int index2 = cursor.getColumnIndex(DBHelper.SCORE);
                String words = cursor.getString(index1);
                String score = cursor.getString(index2);
                buffer.append(score +"\n");
            }
            return buffer.toString();
        }
    
    
    

    我正在使用Android Studio,我对此一无所知,所以我在问。我已经完成.contains,.equal但结果仍然相同。急需帮助。

2 个答案:

答案 0 :(得分:0)

trim()函数返回修剪后的字符串,因此如果必须将s1和s2的值更改为修剪值,请执行以下操作:

s1 = s1.trim();
s2 = s2.trim();

现在相应地检查值。 (我猜这里可以使用equals())

答案 1 :(得分:0)

适配器不对您的数据负责,它负责将数据映射到ui元素。因此,您需要将数据放入数据库,这将自动更改您的光标,而不是更新列表。使用CursorAdapter或ContentObserver + ArrayAdpter来实现此功能。