でLinkedListのように使用されます。私は最初のエントリを削除し、最後に1つを追加して固定サイズにするLinkedListアプローチでこれを行い、MPChartLibをプロットします。これは、私がRealmデータベースを使用して模倣したいものです。レルムは、私は次のコンストラクタを有するセンサ値のレルムデータベースを持っているアンドロイド
私のアプローチは、最初に以下のコード使用して最初のエントリを削除するには、次のとおりです。
private void removeFirst(){
RealmResults<DataEntry> result1 = mRealm.where(DataEntry.class).findAll();
mRealm.beginTransaction();
Log.i(TAG, "remove the first element of the database ");
DataEntry first =result1.first();
first.removeFromRealm();
Log.i(TAG, "shift the indexes of the database by one " + result1.size());
for (int i = 0; i < result1.size(); i++) {
DataEntry u = result1.get(i);
int index = u.getxIndex();
u.setxIndex(index - 1);
String xValue = "" +index;
u.setxValue(xValue);
}
mRealm.commitTransaction();
}
をその後、私は
@Subscribe
public void onSensorUpdatedEvent(SensorUpdatedEvent event) {
if (event.getSensor().getId() == this.sensor.getId()) {
// Log.i(TAG, "remove the first element of the database ");
removeFirst();
mRealm.beginTransaction();
DataEntry entry = mRealm.createObject(DataEntry.class);
// Log.i(TAG, "in database update event with index = " + nextIndex);
entry.setxIndex(nextIndex);
entry.setxValue("" + nextIndex);
nextIndex++;
entry.setAndroidDevice(mAndroidId);
entry.setTimestamp(event.getDataPoint().getTimestamp());
currT.setText(precsion.format(event.getDataPoint().getTimestamp()));
if (event.getDataPoint().getValues().length > 0) {
entry.setX(event.getDataPoint().getValues()[0]);
currX.setText(precsion.format(event.getDataPoint().getValues()[0]));
} else {
entry.setX(0.0f);
}
if (event.getDataPoint().getValues().length > 1) {
entry.setY(event.getDataPoint().getValues()[1]);
currY.setText(precsion.format(event.getDataPoint().getValues()[1]));
} else {
entry.setY(0.0f);
}
if (event.getDataPoint().getValues().length > 2) {
entry.setZ(event.getDataPoint().getValues()[2]);
currZ.setText(precsion.format(event.getDataPoint().getValues()[2]));
} else {
entry.setZ(0.0f);
}
deltaT.setText(precsion.format((event.getDataPoint().getTimestamp() - lastT)/scaleT));
lastT = event.getDataPoint().getTimestamp();
entry.setAccuracy(event.getDataPoint().getAccuracy());
mRealm.commitTransaction();
}
}
取得したデータから新しいデータポイントを追加MPChartLibに沿って位置を確立するためにXINDEXを使用しています私はこれらの値をremoveFirstクラスの一部として変更します。 MpChartLibの私の結果は私に望ましい結果を与えません。私はそのアプリケーションを超えてそれを使用しているかもしれません、または私は正しい方法でレルムを使用していないかもしれません。
どのような意味があるのは、100個の空のデータベースエントリで始まり、100個に達してからエントリ1がエントリ0になり、エントリ99が98になり、エントリ99に新しいデータを追加します。
私はこれがうまくいくと思いますが、100個の固定データベースポイントの値をシフトすることは非常に非効率的です。
私はLinkedListで行うことができるように、最初のものを削除して最後に新しいものを追加する方が好きです。
どのように進んでいくのかが分かりません。どんな支援も大歓迎です。
ありがとう、これは私を軌道に戻した –