Comments 12
Плюс, выскочила проблема создания/закрытия транзакции. Транзакция открывается в одном классе, а закрывается в другом, что так же выглядит не самым лучшим образом с точки зрения разработки. Пока эту «оплошность» я не смог «красиво» исправить.
«Оплошность»?!?! Вы серьезно??
0
Пока не знаю, как сделать это «красиво».
По этому здесь вопрос в руках разработчика. Заметьте, транзакции у меня все закрываются. Именно по этому, я отнёс это в разряд красивостей/«оплошностей»
По этому здесь вопрос в руках разработчика. Заметьте, транзакции у меня все закрываются. Именно по этому, я отнёс это в разряд красивостей/«оплошностей»
-1
Если разобрать по кусочкам, то:
Вы в класе DatabaseConfig создаете объект Environment, из него получаете методом beginTransaction конкретную транзацкию(вы не в DatabaseConfig открываете, а его методом с его настройками, получаете), и потом в том же контексте её закрываете методом commit. Почему вы написали что создаете в одном закрываете в другом?
Вы в класе DatabaseConfig создаете объект Environment, из него получаете методом beginTransaction конкретную транзацкию(вы не в DatabaseConfig открываете, а его методом с его настройками, получаете), и потом в том же контексте её закрываете методом commit. Почему вы написали что создаете в одном закрываете в другом?
+1
Удачи с отображением данных в списках и прочих AdapterView.
+1
Мне AdapterView не подходит по умолчанию. У меня уровень отображения данных сильно отличается от уровня представления данных. Лично для меня прокидывать «сырые» данные прямо в уровень отображения — плохая норма.
-1
В исходниках есть пример для Android и вложен класс JECursosAdapter и пример его работы в ListActivity. Так что с «удачей» все в порядке:
Код примера
public class JECursorAdapterExample extends ListActivity {
private final int RECORDNUM = 5000;
private final int KEYRANGEMIN = 0;
private final int KEYRANGEMAX = 4999;
private final String DBPATH = "data/tmp/JECursorAdapterDemo";
private File myDbEnvPath = new File(DBPATH);
private DataAccessor da;
private static MyDbEnv myDbEnv = new MyDbEnv();
private EntityCursor<Data> valueCursor;
private EntityCursor<Integer> keyCursor;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myDbEnv.setup(myDbEnvPath, false /*read-only*/);
da = new DataAccessor(myDbEnv.getEntityStore());
/* If there is no data, then load the data into JE DB. */
if (da.dataByKey.count() == 0) {
LoadJEData();
}
ReadJEDataFromCursor();
setListAdapter(new JECursorAdapter<Integer, Data>
(this, android.R.layout.simple_list_item_1,
keyCursor, valueCursor, da.dataByKey));
/* Jump to a specific position. */
final Button buttonJump = (Button) findViewById(R.id.jump);
buttonJump.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
final EditText editText =
(EditText) findViewById(R.id.position);
int position = Integer.
valueOf(editText.getText().toString());
position = position < KEYRANGEMIN ?
KEYRANGEMIN :
position;
position = position > KEYRANGEMAX ?
KEYRANGEMAX :
position;
getListView().setSelection(position);
}
});
/* Jump to the beginning of the database. */
final Button buttonJumpStart = (Button) findViewById(R.id.jump_start);
buttonJumpStart.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
getListView().setSelection(KEYRANGEMIN);
}
});
/* Jump to the end of the database. */
final Button buttonJumpEnd = (Button) findViewById(R.id.jump_end);
buttonJumpEnd.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
getListView().setSelection(KEYRANGEMAX);
}
});
}
private void LoadJEData()
throws DatabaseException {
Data theData = new Data();
try {
for (int i = 0; i < RECORDNUM; i++) {
theData.setKey(i);
theData.setData("Record " + i);
da.dataByKey.put(theData);
}
} catch (DatabaseException dbe) {
dbe.printStackTrace();
}
}
private void ReadJEDataFromCursor()
throws DatabaseException {
valueCursor =
da.dataByKey.entities(KEYRANGEMIN, true, KEYRANGEMAX, true);
CursorConfig cursorCon = new CursorConfig();
cursorCon.setReadUncommitted(true);
keyCursor = da.dataByKey.keys
(null, KEYRANGEMIN, true, KEYRANGEMAX, true, cursorCon);
}
}
0
А где ссылка на библиотеку для встраивания Berkeley DB?
0
Интересен такой вопрос — как вы делали пагинацию в случае с наличием связи 1-N или N-N. Грубо говоря, есть у меня список учеников, список классов, связанные между собой, очевидно, идентификаторами. Можно ли каким-то образом получить выборку учеников, отсортированную по любому из SecondaryIndex-ов по id класса?
0
Only those users with full accounts are able to leave comments. Log in, please.
Использование Berkeley DB в Android приложении