Meine RecyclerView funktionierte gut, wenn ich es aus einer lokalen Datenbank mit SQLiteHelper gefüllt, aber jetzt möchte ich es mit einer externen Datenbank in meinem Assets Ordner mit SQLiteAssetHelper füllen, so folgte ich dem Beispiel von dies Github SQLiteAssetHelper example, aber ich denke, dass die SimpleCursorAdapter() -Methode ist kompatibel mit ListView, aber nicht mit dem RecyclerView, da es mir einen "Inkompatiblen Typ" IDE-Fehler gibt.Füllen Sie eine RecyclerView mit SQLiteAssetHelper
Ist das ein Weg um dies oder sollte ich meine RecyclerView zu einem ListView konvertieren? Hilfe würde sehr geschätzt werden.
public class DisplayActivity extends AppCompatActivity {
DataSource mDataSource;
List<Facility> facilityList = DataProvider.facilityList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mDataSource = new DataSource(this);
mDataSource.open(); // Open database
mDataSource.seedDatabase(facilityList);
List<Facility> listFromDB = mDataSource.getAllItems();
FacilitiesAdapter adapter = new FacilitiesAdapter(this, listFromDB);
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.displayActivityRecyclerView);
recyclerView.setAdapter(adapter);
} // End of onCreate()
@Override
protected void onPause() {
super.onPause();
mDataSource.close(); // Close database connection when application is
} // paused to prevent database leaks.
@Override
protected void onResume() {
super.onResume();
mDataSource.open(); // Open database connection when application is resumed
}
}
SQLiteHelper Klasse:
public class DBHelper extends SQLiteOpenHelper {
public static final String DB_FILE_NAME = "health.db";
public static final int DB_VERSION = 1;
public DBHelper(Context context) {
super(context, DB_FILE_NAME, null, DB_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(FacilitiesTable.SQL_CREATE); // Execute SQL_CREATE statement;
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(FacilitiesTable.SQL_DELETE); // delete old database
onCreate(db); // Create new database
}
}
"Mein RecyclerView funktionierte gut, als ich es aus einer lokalen Datenbank mit SQLiteHelper bevölkerte" - Sie verwendeten dort 'SimpleCursorAdapter' nicht. Also, wenn es "gut funktioniert", bleiben Sie bei diesem Code und tauschen Sie Ihren 'SQLiteOpenHelper' für einen' SQLiteAssetHelper' aus. Andernfalls erstellen Sie Ihren eigenen "RecyclerView.Adapter", der Ihren 'Cursor' als Datenquelle verwendet. – CommonsWare
@CommonsWare Vielen Dank für Ihre Antwort :) Aber ich muss die externe Datenbank verwenden oder irgendwie die Datenbankdatei in meinen/data/data/package/database-Ordner kopieren, was die perfekte Lösung wäre. – aatj
Bitte bearbeiten Sie Ihre Frage und zeigen Sie den Code, der "funktionierte gut mit ich füllte es aus einer lokalen Datenbank mit SQLiteHelper". – CommonsWare