Android MergeCursor не работает на версии> 3.x? - PullRequest
1 голос
/ 04 января 2012

Кто-нибудь использовал этот класс и посмотреть, не сломан ли он в Android версии 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?

1 Ответ

0 голосов
/ 05 января 2012

Хорошо, я нашел решение:

Я заменил импорт CursorAdapter и SimpleCursorAdapter на импорт из пакета совместимости и использовал CursorAdapter.swapCursor вместо CursorAdapter.changeCursor.

Кажется, что-то связано, что swapCursor не закрывает предыдущий курсор.

...