2010-12-19 3 views
1

Mein Szenario ist, dass ich eine Aktivität habe, die den Cursor in SQLite DB gespeichert zeigt. Das Hauptlayout enthält oben eine Textansicht und eine Listenansicht. Und dann verwende ich simplecursoradapter, um den Cursor in listadapter zu setzen und listadapter in listview einzufügen. simplecursoradapter verwenden Sie ein anderes Layout. Das Problem ist jetzt, dass ich, wenn ich simplecursoradapter verwende, drei Spalten in listview bringe, Beispiel: Artikelname, Datum und Preis. Das ist in Ordnung, wenn ich diese Werte nicht ändere.Wie ändert man Werte im zweiten Layout in derselben Aktivität?

Eigentlich möchte ich eine Zeichenfolge zum Preis hinzufügen und neue Zeichenfolge wie Währungszeichen bilden. Meinem Verständnis nach können wir nurContentView für ein Layout und nicht für zwei Layouts festlegen. Ich habe auch versucht, ein neues Layout zu füllen und Wert zu setzen, aber gescheitert

LayoutInflater inflater = (LayoutInFlater) context.getSystemService (Context.LAYOUT_INFLATER_SERVICE); Anzeigen textEntryView = inflater.inflate (R.layout.itemlist, null); TextView Preis = (TextView) textEntryView.findViewById (R.id.price); price.setText (Währung + c.getString (4) .toString());

Sogar gibt es kein Problem in der Syntax und Anwendungen ausführen. Aber wenn ich die App starte und die Listenansicht überprüfe, zeigt der Preis immer noch den Preis an, ohne dass ein Währungszeichen hinzugefügt wird. Ich kann nur Währungszeichen unter dem Hauptlayout hinzufügen, nicht das zweite Layout, das in simplecursoradapter verwendet wird.

In der Tat, Währung wird in Benutzereinstellungen gewählt, und ich verwende sharedreference, um seinen Wert abzurufen und zum Preiswert im Cursor hinzuzufügen. Es scheint, dass simplecursoradapter ein anderes Layout verwendet, also kann ich das nicht tun.

Hat jemand Ideen zu diesem Fall?

Ich würde geschätzt werden, wenn Methoden und Codes für ähnliche Ansätze zur Verfügung gestellt werden.

Danke !!

Antwort

0

Ich bin mir nicht sicher, ob ich Ihrer Frage 100% folge, daher ist dies nicht unbedingt die Antwort, die Sie suchen.

Wenn Sie die Kontrolle darüber haben wollen, wie die Anordnung der Elemente in einer Listenansicht betrachten, sollen Sie Ihre eigene benutzerdefinierte Implementierung von ArrayAdapter machen:

A ListAdapter, die ein Listview verwaltet durch ein Array unterstützt von beliebig Objekte. (...) Um etwas anderes als TextViews für die Array-Anzeige, zum Beispiel, ImageViews zu verwenden, oder einige der Daten neben toString() Ergebnisse füllen Sie die Ansichten, überschreiben getView (int, View, ViewGroup) zu geben Sie den gewünschten Ansichtstyp zurück.

Wenn Sie nur googlen für custom arrayadapter example, sollten Sie genug Beispiele finden, die Ihnen zeigen, wie Sie dies implementieren. Zwei solche Beispiele sind:

Viel Glück :)

+0

Vielen Dank für Ihre Antwort. Aber es scheint, dass deine Antwort nicht das ist, was ich will. Vielleicht versuche ich es deutlicher zu erklären. Ich habe eine Aktivität, die oben Textansicht und Listview unter Textansicht enthält. Dies ist das Hauptlayout. Und dann verwende ich simplecursoradapter und fülle Cursordaten in listadapter und setze listadapter in listview. Das Problem ist, dass ich nicht weiß, wie man die Daten zurückholt und die Textansicht ändert, die von simplecursoradapter benutzt wird. listadapter = new SimpleCursorAdapter (dies, R.layout.itemlist, listcursor, neuer String [] {"item", "time", "price"}, neuer int [] {R.id.item, R.id. Datum, R.Id.Preis}); –

+0

Ich möchte die Daten in "Preis" im Cursor abrufen, Preis ist Spalte im Cursor. Fügen Sie dem Preis ein Währungszeichen hinzu und zeigen Sie es in der Listenansicht an. In meiner Listenansicht enthält es Cursor-Daten. Jeder Datensatz enthält Artikel, Datum und Preis. Aber nach meinem Verständnis kann jede Aktivität nur "setContentView" für ein Layout nicht zwei. Ist es möglich, die Spalte im Cursor, die von simplecursoradapter verwendet wird, abzurufen und einen String zur Spalte hinzuzufügen und ihn in listview anzuzeigen, ohne den Inhalt der Cursorspalte zu ändern? –

+0

Zum Beispiel ist ein Datensatz im Cursor in der Preisspalte 4000, aber ich möchte Währungszeichen wie "$" hinzufügen, um "$ 4000" zu bilden, aber die Preisspalte speichert 4000 in der sqlite DB, nur als $ 4000 in der Listenansicht. Eigentlich enthält die Artikelliste oben in simplecursoradapter drei Textansichten. Hoffe, dass Sie verstehen, was ich jetzt tun möchte, danke !! –

0

Schließlich habe ich BindViews mein Problem zu lösen.In meiner Frage habe ich bereits erwähnt, dass ich mit dem simplecursoradapter Daten aus SQLiteDB nicht array abrufe. Ich weiß Arrayadapter funktioniert, aber es funktioniert nicht effizient für SQLite. Bevor ich den Basisadapter erweitert habe, habe ich meinen eigenen entworfen, um benutzerdefinierte Ansichten für Textansichten hinzuzufügen. Es funktioniert aber zu langsam, wenn viele Daten vorhanden sind. Ein einfacher Cursor ist also effizienter.

Ich erweitert SimpleCursoradapter und überschreiben Bindview für meinen eigenen Zweck. Es funktioniert für das, was ich brauche.

Danke für Ihre Hilfe und Link für Arrayadapter