0

我知道我可以使用 Cursor c=managedQuery(Contacts.CONTENT_URI,null,null,null,Contacts.DISPLAY_NAME+" ASC") 来获取游标。

现在我希望从 myMRuleList 中得到一个 Cursor,我该怎么做?谢谢!

lv = getListView();
Cursor c=managedQuery(Contacts.CONTENT_URI,null,null,null,Contacts.DISPLAY_NAME+" ASC");    
String[] cols=new String[] {Contacts.DISPLAY_NAME};
int[] views=new int[]{android.R.id.text1};
SimpleCursorAdapter myAdapter=new SimpleCursorAdapter(this,android.R.layout.simple_list_item_1,c,cols,views);
this.setListAdapter(myAdapter);

List<MRule> myMRuleList=new ArrayList<MRule>;
MRule aMRule=new MRule();
aMRule.ruleID=1;
aMRule.name="a";
aMRule.enabled=false;
MRule bMRule=new MRule();
bMRule.ruleID=1;
bMRule.name="b";
bMRule.enabled=false;
myMRuleList.add(aMRule);
myMRuleList.add(bMRule);

public class MRule {
  public int ruleID;
  public String name;
  public Boolean enabled;

}
4

3 回答 3

4

您不应该CursorList. 如果你想在永久存储上插入/更新数据,你应该使用insert()update()提供的ContentResolver.insert()/update()或者SQLiteOpenHelper.insert()/update()如果分别处理ContentProviders或 SQLite 数据库

Cursors 通常与类表结构(ContentProviders/Databases)而不是Lists 一起使用。

正如 zapl 建议的那样,您应该避免managedQuery()并使用该Loader框架。通过这样做,您的查询将在单独的Thread.

于 2013-11-12T02:44:26.267 回答
0

为什么要这么做?是更新您的数据库还是您想要实现什么?

这是谷歌对 Cursor 类的参考的链接:

http://developer.android.com/reference/android/database/Cursor.html

如果您只想更新数据库,请阅读此 SO 问题:

如何通过 CursorLoader 使用 ContentProvider 的 insert() 方法将值正确插入 SQLite 数据库?

于 2013-11-12T03:11:03.770 回答
0

android.database.MatrixCursor, 这是你想要的吗?

于 2013-11-12T03:13:01.453 回答