1

SimpleCursorAdapter用来从数据库中获取数据并将其显示在ListView. 请任何人告诉我如何从该列表中选择/删除一个或多个列表项。或者至少告诉我如何从数据库中获取数据ArrayAdapter以将其显示在ListView.

教程将是最佳实践。

提前致谢。

4

1 回答 1

0

请任何人告诉我如何从该列表中选择/删除一个或多个列表项。

因此,您需要获取每一行的 id 才能从数据库中删除正确的项目。当时只从列表中删除一项的问题并不太棘手,只需创建一些 OnItemClickListener 或 ContextMenu 并提供给用户删除选项。然后,如果您使用一些 CursorAdapter,您会自动从 OnItemClick 方法的长 id 参数中获取所选项目的 rowId。对于 ContextMenu,您可以从 AdapterView.ContextMenuInfo 获取 id。

问题是,如果您想删除多个,并且使用任何侦听器或 ContextMenu 都不够有效。您应该决定创建自己的 ListView 行,您将在其中拥有 CheckBox,然后您可以简单地删除多行。你去抛出 List 并从数据库中删除 CheckBox 选中的每一行并刷新 List 。这是我脑海中浮现的第一个想法。

或者至少告诉我如何使用 ArrayAdapter 从数据库中获取数据以将其显示在 ListView 中。

如果你想使用 ListAdapter(ArrayAdapter, BaseAdapter etc.) 那么现在你需要从数据库中获取记录列表。我建议您创建自己的 ListAdapter 子类来更好地控制适配器。在这里,我建议您创建自己的对象,该对象将代表您在数据库中的表,其中对象的属性等于表中的列。然后简单地从数据库中获取列表。下面我会给你伪代码。

例子:

public List<OwnObject> getAll() {
   List<OwnObject> items = new ArrayList<OwnObject>();
   OwnObject o = null; 
   Cursor c = null;
   try {
      db = helper.getReadableDatabase(); // or created some method as open();
      String query = "select * from TableName";
      c = db.rawQuery(query, null);
      if (c.moveToFirst()) {
         do {
            o = new OwnObject();
            o.setProperty1(c.getString(c.getColumnIndex("Column1")));
            o.setProperty2(c.getString(c.getColumnIndex("Column2")));
            o.setProperty3(c.getString(c.getColumnIndex("Column3")));
            ...
            items.add(o);

         } while (c.moveToNext());
      }
      return items;
   }
   finally {
      if (c != null) {
         c.close();
      }
      // close also db
   }
}
于 2013-03-27T08:21:29.547 回答