澄清使用吐司信息

时间:2012-02-15 10:27:16

标签: android

我想在搜索参数无效时使用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消息中显示它,那么如何在这里使用它,

感谢您的帮助,因为我是这个平台的新手。

2 个答案:

答案 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 ....
}