我知道我可以使用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;
}
答案 0 :(得分:4)
您不应该从Cursor
创建List
。如果要在永久存储上插入/更新数据,则应使用insert()
或update()
提供的ContentResolver.insert()/update()
或SQLiteOpenHelper.insert()/update()
处理ContentProviders
或SQLite数据库分别
Cursor
通常用于表格式结构(ContentProvider
s /数据库)而不是List
s。
正如zapl建议你应该避免managedQuery()
并使用Loader
框架。通过这样做,您的查询将在单独的Thread
。
答案 1 :(得分:0)
你为什么这样做?是更新数据库还是想要实现的目标?
以下是google对Cursor类的引用的链接:
http://developer.android.com/reference/android/database/Cursor.html
如果您只想更新数据库,请阅读以下问题:
答案 2 :(得分:0)
android.database.MatrixCursor
,这就是你想要的吗?