使用Edittext值查询SQLite,然后在ListView中显示结果

时间:2015-04-07 20:55:47

标签: android sqlite listview android-listview

所以我目前能够在ListView中查看SQLite数据,但由于我的数据库控制器中的set语句,它将带回所有记录。但我希望用户能够将值添加到EditText中并使用该值查询数据库,然后将结果显示到ListView中。以下是我使用的两个当前代码片段,只是帮助它。任何帮助将提前感谢!

在我的MainActivity中,我在oncreate中调用它来显示listview:

public void listRecs(){

        ArrayList<HashMap<String, String>> scanList = this.controller.getAllRecsExpDESC();

        myAdapter = new SimpleAdapter(this, scanList, R.layout.list_view_layout, new String[]{"regNo","streetName","recExpDate","tvPosition"},
               new int[]{R.id.reg_No,R.id.street_Name,R.id.date_Time,R.id.tv_Position});

        Recs.setAdapter(myAdapter);
    }

这是我的数据库控制器的代码:

public ArrayList<HashMap<String, String>> getAllRecsExpDESC() {
        ArrayList<HashMap<String, String>> wordList;
        wordList = new ArrayList<HashMap<String, String>>();
        String selectQuery = "SELECT  * FROM recs ORDER BY recExpDate DESC";
        SQLiteDatabase database = this.getWritableDatabase();
        Cursor cursor = database.rawQuery(selectQuery, null);
        if (cursor.moveToFirst()) {
            do {
                HashMap<String, String> map = new HashMap<String, String>();
                map.put("regNo", cursor.getString(0));
                map.put("tvPosition", cursor.getString(1));
                map.put("streetName", cursor.getString(2));
                map.put("recExpDate", cursor.getString(3));
                wordList.add(map);
            } while (cursor.moveToNext());
        }
        database.close();
        return wordList;
    }

1 个答案:

答案 0 :(得分:1)

从事物的声音来看,你会采用与上面相似的功能,但它需要一个字符串参数并将其用作原始查询的一部分。

public ArrayList<HashMap<String, String>> getRecsFromParameter(String PARAMETER)

不确定您想要做什么,但查询将类似于:

String selectQuery = "SELECT  * FROM recs WHERE Column = " + PARAMETER + "ORDER BY recExpDate DESC";

否则,这将以相同的方式工作,您将获得列表结果集并使用列表创建适配器。

需要注意的是,根据用户输入执行代码会使您的应用程序容易受到SQL injection的攻击。您可能还需要采取措施防止用户输入他们想要的任何内容以防止损坏内部数据库。

编辑:哦!要从编辑文本中获取字符串,您可以执行以下操作:

(EditText) findViewById(R.id.edit_text_id).getEditableText().toString();