【问题标题】:How to display the data in listview from database and CursorAdapter by using search function如何使用搜索功能从数据库和 CursorAdapter 显示列表视图中的数据
【发布时间】:2014-08-15 20:48:25
【问题描述】:

我在我的应用程序中有一个列表视图,我添加了我需要在数据库和 CursorAdapter 中搜索的 EditView

如何获得搜索结果?

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);

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

【问题讨论】:

    标签: android listview search cursor


    【解决方案1】:

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

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

    不管怎样,这里是自定义 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 也可能很有用(这是我最终所做的,以根据搜索选项等来正确显示结果)。例如,搜索姓名时,您可能希望在列表中多次搜索最后一个,然后是第一个,然后是中间 - 然后您可能希望以不同的顺序显示结果(例如按姓氏,其中中间名称结果应放在第一位)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多