如何使用搜索功能从数据库和CursorAdapter中显示listview中的数据

时间:2014-08-15 20:48:25

标签: android listview search cursor

我hava listview在我的应用程序中,我添加了EditView我需要在数据库和CursorAdapter中搜索

如何从搜索获得结果?

db = new DatabaseHandler(this);
lv = (ListView) findViewById(R.id.listView1);   
Cursor cursor = db.readData();  

String[] from = new String[] {  DatabaseHandler.KEY_COED ,DatabaseHandler.KEY_Quantity};          
int[] to = new int[] {R.id.Code ,R.id.Quantity};  

SimpleCursorAdapter adapter = new SimpleCursorAdapter(Show.this, R.layout.view_code, cursor, from, to);
adapter.notifyDataSetChanged();
lv.setAdapter(adapter);

此代码仅用于在列表视图中显示数据。

1 个答案:

答案 0 :(得分:0)

要实现搜索,我使用自定义适配器。自定义适配器的实现实际上取决于您的情况。首先,它是一种自适应搜索吗?就像你想在EditText上使用TextWatcher一样,以便在用户输入时过滤结果?

此外,您是否需要执行数据库更新,或者在与ListView交互期间是否需要打开Cursor。如果没有,您可以创建自定义ArrayList类并使用搜索数据来过滤结果列表。如果是这样,那么您需要一个自定义Cursor,它将使用您的搜索条件重新查询数据库。

无论如何,这是Custom ArrayAdapter的参考:

http://www.ezzylearning.com/tutorial/customizing-android-listview-items-with-custom-arrayadapter

自定义CursorAdapter:

http://tausiq.wordpress.com/2012/08/22/android-list-view-from-database-with-cursor-adapter/

另外,请记住这一点。您的自定义适配器将需要更新/清除搜索的方法。在“getView”或“newView”方法中,您可以动态跳过或忽略光标或数组的元素,只显示您想要的元素。

您可能还想构建一个自定义ArrayList对象,该对象包含每行数据,然后构建搜索方法并对其进行过滤。

向ArrayList添加自定义比较器可能也很有用(这是我最终为了根据搜索选项正确显示结果而做的事情,等等)。例如,在搜索名称时,您可能希望多次搜索列表中的最后一个,然后是第一个,然后是中间 - 然后您可能希望以不同的顺序显示结果(如姓氏,中间位置)应首先放置名称结果)。