http://stackoverflow.com/quest…889/android-pre-filled-db
Dort ist beschrieben wie du eine bereits gefüllte SQLite beim ersten starten der App nutzt.
http://stackoverflow.com/quest…889/android-pre-filled-db
Dort ist beschrieben wie du eine bereits gefüllte SQLite beim ersten starten der App nutzt.
Ja hab das getan, funktioniert super und ich kann auch die Werte aus den Zeilen auslesen ohne Probleme.
Du sagtest ja for-Schleife entfällt. Meine Lösung wäre es jetzt einfach für jeden Abschnitt bis zu einer Entscheidung immer eine eigene Methode.
Sprich "public void ersterAbschnitt" liest dann Zeile 1-4 raus, dann wird Zeile 5-6 in die Entscheidungsfelder eingetragen. Dann mit ner if-Abfrage abfragen welcher Zweig genommen wurde und dann z.B. Methode zweiterAbschnitt bzw. dritter Abschnitt aufrufen.
naja was machst du dann wenn du 100 Abschnitte hast?
wohl kaum 100 methoden oder :P?
Reicht doch eine Methode in der du die Entscheidung reichst und anhand derer du das neue anzuzeigende aus der Datenbank abfragst.
Hab mal ne Frage zum Befüllen der ArrayList, das klappt nicht so ganz. Habe diese Methode zum Befüllen:
private ArrayList<DataObject> getDataSet() {
String string = "";
string = TextTransmitter;
ArrayList results = new ArrayList<DataObject>();
DataObject obj = new DataObject(string);
results.add(obj);
return results;
}
Diese rufe ich in meiner StoryLogik() Methode auf, so:
public void StoryLogik(){
//DATENBANK ABFRAGEN DER JEWEILIGEN TABELLEN
String selectQueryTEXT = "SELECT TEXT FROM story_table";
String selectQueryIDL_ = "SELECT ID_STORYTEXT_LEFT FROM decisions_table";
String selectQueryIDR_ = "SELECT ID_STORYTEXT_RIGHT FROM decisions_table";
//DATENBANK ÖFFNEN
SQLiteDatabase db = myDB.getReadableDatabase();
// CURSOR INIT UND AN ANFANG DER TABELLE SETZEN
Cursor cursorTEXT = db.rawQuery(selectQueryTEXT, null);
Cursor cursorIDL = db.rawQuery(selectQueryIDL_, null);
Cursor cursorIDR = db.rawQuery(selectQueryIDR_, null);
cursorTEXT.moveToFirst();
cursorIDL.moveToFirst();
cursorIDR.moveToFirst();
String str = "";
str = cursorTEXT.getString(cursorTEXT.getColumnIndex("TEXT"));
TextTransmitter = str;
getDataSet();
}
Alles anzeigen
Die Variable TextTransmitter übergibt den Wert in den Array und diesen Wert sollte er eigentlich verwerten, aber die Variable ist IMMER leer, versteh nicht warum. Im Debugger ebenfalls, immer leer.Wenn ich dann mit dem Cursor weitergehe also:
cursorTEXT.moveToNext();
str = cursorTEXT.getString(cursorTEXT.getColumnIndex("TEXT"));
TextTransmitter = str;
getDataSet();
}
Wird auch nichts eingetragen, was mache ich denn falsch?
sorry aber ich versteh absolut nicht was du dort tun willst.
Der Quellcode ergibt für mich gar keinen Sinn.
Oh ok, ich probiers mal mit dem ganzen Quelltext, vllt sind Ausschnitte nicht so gut geeignet dafür. Wenn du es dann immer noch nicht verstehst, kläre ich dich auf :-). Problem vom Post #44 besteht noch immer
Das ist die MainActivity.java
package com.gerritschroeer.entwurf3;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import android.widget.Toast;
import java.io.IOException;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
DatabaseHelper myDB;
private RecyclerView mRecylcerView;
private RecyclerView.Adapter mAdapter;
private RecyclerView.LayoutManager mLayoutManger;
private TextView textView;
public String TextTransmitter = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myDB = new DatabaseHelper(this);
try {
myDB.createDataBase();
} catch (IOException e) {
e.printStackTrace();
}
try {
myDB.openDataBase();
}catch(SQLException sqle){
throw sqle;
}
textView = (TextView) findViewById(R.id.textViewStory);
mRecylcerView = (RecyclerView) findViewById(R.id.theRecyclerView);
mRecylcerView.setHasFixedSize(true);
mLayoutManger = new LinearLayoutManager(this);
mRecylcerView.setLayoutManager(mLayoutManger);
mAdapter = new RVAdapter(getDataSet());
mRecylcerView.setAdapter(mAdapter);
StoryLogik();
}
@Override
protected void onResume(){
super.onResume();
}
public void StoryLogik(){
//DATENBANK ABFRAGEN DER JEWEILIGEN TABELLEN
String selectQueryTEXT = "SELECT TEXT FROM story_table";
String selectQueryIDL_ = "SELECT ID_STORYTEXT_LEFT FROM decisions_table";
String selectQueryIDR_ = "SELECT ID_STORYTEXT_RIGHT FROM decisions_table";
//DATENBANK ÖFFNEN
SQLiteDatabase db = myDB.getReadableDatabase();
// CURSOR INIT UND AN ANFANG DER TABELLE SETZEN
Cursor cursorTEXT = db.rawQuery(selectQueryTEXT, null);
Cursor cursorIDL = db.rawQuery(selectQueryIDL_, null);
Cursor cursorIDR = db.rawQuery(selectQueryIDR_, null);
cursorTEXT.moveToFirst();
cursorIDL.moveToFirst();
cursorIDR.moveToFirst();
String str = "";
str = cursorTEXT.getString(cursorTEXT.getColumnIndex("TEXT"));
TextTransmitter = str;
getDataSet();
cursorTEXT.moveToNext();
str = cursorTEXT.getString(cursorTEXT.getColumnIndex("TEXT"));
TextTransmitter = str;
getDataSet();
}
private ArrayList<DataObject> getDataSet() {
//Toast.makeText(this,TextTransmitter,Toast.LENGTH_SHORT).show();
//String[] test = {"Test1", "Test2", "Test3", "Test4"};
String schtring = "";
schtring = TextTransmitter;
ArrayList results = new ArrayList<DataObject>();
DataObject obj = new DataObject(schtring);
results.add(obj);
return results;
}
}
Alles anzeigen
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!