我想在搜索参数无效时使用Toast消息。说,我想将“吐司”消息显示为“无效搜索”
这是我的示例代码,
**Database.java**
package samples.employeephone;
import android.content.ContentValues;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class Database extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "employee_directory";
public Database(Context context) {
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "CREATE TABLE IF NOT EXISTS employee (" +
"_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"firstName TEXT, " +
"lastName TEXT, " +
"title TEXT, " +
"officePhone TEXT, " +
"cellPhone TEXT, " +
"email TEXT, " +
"managerId INTEGER)";
db.execSQL(sql);
ContentValues values = new ContentValues();
values.put("firstName", "xyz");
values.put("lastName", "abc");
values.put("title", "PL");
values.put("officePhone", "123456");
values.put("cellPhone", "123456");
values.put("email", "xyz@email.com");
db.insert("employee", "lastName", values);
values.put("firstName", "eeee");
values.put("lastName", "aaaa");
values.put("title", "PM");
values.put("officePhone", "234576");
values.put("cellPhone", "2344556");
values.put("email", "eeee@email.com");
values.put("managerId", "1");
db.insert("employee", "lastName", values);
values.put("firstName", "ash");
values.put("lastName", "l");
values.put("title", "POC");
values.put("officePhone", "454454");
values.put("cellPhone", "5454646");
values.put("email", "ash@email.com");
values.put("managerId", "1");
db.insert("employee", "lastName", values);
values.put("firstName", "ddd");
values.put("lastName", "yxv");
values.put("title", "AS");
values.put("officePhone", "654545");
values.put("cellPhone", "5454545");
values.put("email", "ddyz@email.com");
values.put("managerId", "2");
db.insert("employee", "lastName", values);
values.put("firstName", "din");
values.put("lastName", "sss");
values.put("title", "ers");
values.put("officePhone", "25545");
values.put("cellPhone", "65454");
values.put("email", "din@adobe.com");
values.put("managerId", "2");
db.insert("employee", "lastName", values);
values.put("firstName", "sis");
values.put("lastName", "and");
values.put("title", "VP");
values.put("officePhone", "878788");
values.put("cellPhone", "88787");
values.put("email", "sis@email.com");
values.put("managerId", "2");
db.insert("employee", "lastName", values);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS employees");
onCreate(db);
}
}
**PhonebookActivity.java**
package samples.employeephone;
//import samples.employeedirectory.R;
import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
public class PhonebookActivity extends Activity {
protected EditText searchText;
protected SQLiteDatabase db;
protected Cursor cursor;
protected ListAdapter adapter;
protected ListView employeeList;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
db = (new Database(this)).getWritableDatabase();
searchText = (EditText) findViewById (R.id.searchText);
employeeList = (ListView) findViewById (R.id.list);
}
public void search(View view) {
// || is the concatenation operation in SQLite
cursor = db.rawQuery("SELECT _id, firstName, lastName, title FROM employee WHERE firstName || ' ' || lastName LIKE ?",
new String[]{"%" + searchText.getText().toString() + "%"});
adapter = new SimpleCursorAdapter(
this,
R.layout.employee_list_item,
cursor,
new String[] {"firstName", "lastName", "title"},
new int[] {R.id.firstName, R.id.lastName, R.id.title});
employeeList.setAdapter(adapter);
}
}
and my xml files are,
**main.xml**
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<EditText
android:id="@+id/searchText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<Button
android:id="@+id/searchButton"
android:text="Search"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="search"/>
</LinearLayout>
<ListView
android:id="@+id/list"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
</LinearLayout>
**employee_list_item.xml**
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:padding="8px">
<TextView
android:id="@+id/firstName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/lastName"
android:layout_marginLeft="6px"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/firstName"/>
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/firstName"/>
</RelativeLayout>
现在,在我的搜索过程中,如果输入的名称无效,我想在toast消息中显示它,那么如何在这里使用它,
感谢您的帮助,因为我是这个平台的新手。
答案 0 :(得分:1)
在搜索(View view)方法中,在初始化适配器之前,检查游标数是否为0.如果是,则执行toast。
Toast.makeText(getContext(), "Invalid search", Toast.LENGTH_SHORT).show();
答案 1 :(得分:0)
如果我正确理解了你的请求,你需要在db查询后得到类似的东西:
if (cursor.getCount()==0) {
Context context = getApplicationContext();
CharSequence text = "Invalid search";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
} else
{
... update your view ....
}