2012-01-04 124 views
1

有没有人使用这个类,看看它是不是在Android版本3.x和以上破碎?它在以前的版本中对我很好。这里有一个例子:Android MergeCursor在版本> 3.x时崩溃了吗?

public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
MatrixCursor cursorOne = new MatrixCursor(new String[]{ "_id", "name", "description" }); 

cursorOne.addRow(new Object[]{ 5, "Object 2", "Description 2" }); 
cursorOne.addRow(new Object[]{ 5, "Object 3", "Description 3" }); 
cursorOne.addRow(new Object[]{ 5, "Object 4", "Description 4" }); 
cursorOne.addRow(new Object[]{ 5, "Object 5", "Description 5" }); 

CursorAdapter cursorAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_list_item_2, cursorOne, new String[] { "name", "description" }, new int []{ android.R.id.text1, android.R.id.text2 }); 

MatrixCursor cursorTwo = new MatrixCursor(new String[]{ "_id", "name", "description" }); 

cursorTwo.addRow(new Object[]{ 5, "Object 2", "Description 2" }); 
cursorTwo.addRow(new Object[]{ 5, "Object 3", "Description 3" }); 
cursorTwo.addRow(new Object[]{ 5, "Object 4", "Description 4" }); 
cursorTwo.addRow(new Object[]{ 5, "Object 5", "Description 5" }); 

MergeCursor mergeCursor = new MergeCursor(new Cursor[] { cursorOne, cursorTwo }); 

cursorAdapter.changeCursor(mergeCursor); 

setListAdapter(cursorAdapter); 
} 

它没有显示任何东西,它似乎是它清理游标。我是否错过了SDK> 3.x?

回答

0

好的,我发现了一种解决方案:

我取代的兼容性包CursorAdapterSimpleCursorAdapter进口的那些和使用CursorAdapter.swapCursor代替CursorAdapter.changeCursor

似乎与swapCursor不关闭以前的光标有关。