如何创建基于Cursor的List <mrule>以使用MRule.name填充ListView?</mrule>

时间:2013-11-12 02:38:51

标签: android

我知道我可以使用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;

}

3 个答案:

答案 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

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

How to properly insert values into the SQLite database using ContentProvider's insert() method through a CursorLoader?

答案 2 :(得分:0)

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