Guten Nabend zusammen!
Ich bin gerade dabei eine App zu erstellen, in der ich das TabLayout verwenden. Unter einem Tab befindet sich eine ListView. Nun möchte ich aber innerhalb der ListView oben einen Button einfügen über den ich dann auf eine normale View komme um neue Datensätze in die Datenbank zu speichern die dann später in der ListView ausgegeben werden.
Ich bin noch relativ neu in der Android Entwicklung und stelle mich gerade vllt ein klein wenig doof an.
Meine Activity für die ListView sieht wie folgt aus:
public class FavoritesActivity extends ListActivity {
private FavsDAO dao;
private SimpleCursorAdapter dbAdapter;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//setContentView(R.layout.favs_add_view);
dao = new FavsDAO(this);
Cursor favsList = dao.fetchAllFavs();
String[] from = new String[]{
FavsDAO.MY_TEXT
};
int[] target = new int[]{
R.id.listText
};
dbAdapter = new SimpleCursorAdapter(this, R.layout.favs_view, favsList, from, target);
setListAdapter(dbAdapter);
}
}
Alles anzeigen
Und meine Layout XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/listText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Medium Text"
android:textAppearance="?android:attr/textAppearanceMedium" />
</LinearLayout>
Alles anzeigen
Ich denke mal das Problem wird sein, dass ich in der Activity kein Layout mit setContent aufrufe bzw. über setListAdapter die Liste erzeuge. Wie gesagt, bin noch recht neu in der Android Entwicklung und komme ursprünglich aus der iOS Entwicklung. Dort würde ich mir über Code einen Button erzeugen und über der Liste positionieren. Ich habe schon bereits in allen meiner Bücher nachgeschaut und natürlich Tante Google befragt, finde aber leider nicht das was ich benötige.
Besten Danke erstmal.
Grüße aus dem Münsterland
EDIT:
Nabend nochmal. Ich habe nun erst einmal einen neuen Tab hinzugefügt wo ich dann neue Einträge erzeugen kann. Ist zwar nicht gerade Usability aber ich muss auch ein wenig weiter kommen.
Mein nächstes Problem ist ein wohl schon bekanntes: Wie kann ich meine ListView mit Datenbank Daten innerhalb eines TableLayouts aktualisieren???
Ok, ich habe bis gerade gefühlte 300 Beiträge aufgerufen. Da wird empfohlen den Cursor mit requery neu aufzurufen und vorher den adapter die anweisung notifyDataSetChanged() zuzuspielen....nu habe ich erstmal überlegt, in welche methode ich das einsetze. in der onCreate() macht es ja keinen Sinn und die onResume() springt nicht auf den Tabwechsel an. Nu hab ich meiner MainActivity einfach setOnTabChangedListener eingesetzt und über die id den Tab abgefragt um dann in der favActivity eine Methode aufzurufen wo ich dann dem cursor und dem adapter die anweisungen zuspiele.
Das gibt aber so eine Schelle von Android, dass ich es gleich wieder lasse...ich denke mal, dass die methode beim ersten tabwechsel vor der onCreate ausgeführt wird und der cursor und der adapter noch nicht bereit sind. Obwohl ich es auch schnon eine dreckige Variante probiert habe, in der ich in der MainActivity eine int var bei dem Tabwechsel hochgezählt habe und den wert der Methode in der FavActivity übergeben habe um dann mittels einer if Bedingung das Ausführen hinter dem ersten onCreate zu setzen...also erst beim zweiten Favaufruf wird diese Methode ausgeführt, aber auch da "ERROR!!!"
Kann mir da jemand einen Tipp geben? Ich kann Daten eintragen, nur muss ich halt erst die Anwendung neu starten damit diese in der Liste angezeigt werden und das geht ja mal überhaupt nicht....
Ich hatte auch etwas davon gelesen, die Activity zu schließen und dann wieder neu aufzurufen...das hat aber auch nicht funktioniert.