我想比较两个字符串。
s1
- 用户输入(字符串)和
s2
- dbHelper.getdata(s1)(String),搜索s1中的文本是否在数据库中
我的代码工作正常但我注意到一些奇怪的事情:
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但结果仍然相同。急需帮助。
答案 0 :(得分:0)
trim()函数返回修剪后的字符串,因此如果必须将s1和s2的值更改为修剪值,请执行以下操作:
s1 = s1.trim();
s2 = s2.trim();
现在相应地检查值。 (我猜这里可以使用equals())
答案 1 :(得分:0)
适配器不对您的数据负责,它负责将数据映射到ui元素。因此,您需要将数据放入数据库,这将自动更改您的光标,而不是更新列表。使用CursorAdapter或ContentObserver + ArrayAdpter来实现此功能。