Verstehe nicht was du willst. Was soll die Frage?
Ein Fragment läuft immer in einer Activity nie alleine.
Eine Activity in einer Activity gibt es nicht wenn du das meinen solltest.
Verstehe nicht was du willst. Was soll die Frage?
Ein Fragment läuft immer in einer Activity nie alleine.
Eine Activity in einer Activity gibt es nicht wenn du das meinen solltest.
Hallo ich habe mir den Code Von deinem ListView den du selber gesucht hast von Dezember 2022 noch mal angesehen.
Bleiben wir bei dem Projekt.
So du willst jetzt zb hier nach verschiedenen Eigenschaften Properties der Model Klasse Filtern.
Zb nach der letzen Eigenschaft „region“
So jetzt schau dir mal an was da in der Filter Klasse gemacht wird. Du
vergleichst den Suchstring mit dem was dir toString zurück gibt. Und was ist das?
das ist eine Serialization aller Eigenschaften.
Du willst aber die Filterung nur nach einer Properti nicht nach allen. Also musst du der Filter Klasse erstmal miteilen nach welcher Properti du Filtern willst und dis dann an anbieten, in der Klasse.
Klar du könnstet auch verschiene Filter klassen Schreiben und je nachdem was du suchst benutzen. Würde ich nicht machen.
Du musst auch dem User die Auswahl geben nach welcher Properti er Filtern will.
Du könntest die Auswahl der Klasse im Konstruktor mitgeben, oder du verschlüsselst sie in Suchstring. Das könnest du es in der toString Methode auswerten und mit dem richtigen getter antworten.
Da ist deine Kreativität gefragt.
Du könntest es in etwa so machen habe es nicht getestet nur im Editor geschrieben.
private inner class CountryFilter(p :String) : Filter() {
override fun performFiltering(constraint: CharSequence): FilterResults {
var constraint: CharSequence? = constraint
constraint = constraint.toString().lowercase(Locale.getDefault())
val result = FilterResults()
if (constraint != null && constraint.toString().length > 0) {
val filteredItems = ArrayList<Country>()
var i = 0
val l = originalList.size
val filterSting = "";
when (p) {
"code" -> filterSting = ccountry.code
"name" -> filterSting = ccountry.name
else -> filterSting = country.toString()
}
while (i < l) {
val country = originalList[i]
if (filterSting.lowercase(Locale.getDefault()).contains(constraint)
) filteredItems.add(country)
i++
}
result.count = filteredItems.size
result.values = filteredItems
} else {
synchronized(this) {
result.values = originalList
result.count = originalList.size
}
}
return result
}
Alles anzeigen
Das mit der csv ist ja gedacht für das wie du es bis jetzt hast. Um leichter in Excel die Daten zu erfassen und dann in Android zu benutzen.
Somit müsstest du nur die die csv neu in die App packen und neu übersetzen, wenn sich der Plan ändert.
Hallo hier mal ein altes einfaches Projekt zum CSV Import in eine ArrayList aus dem Assets.
Da ich immer noch meistens in Java Schreibe habe ich es mal für dich mit der Automatik in Kolin übersetzt.
Musst du natürlich für dich anpassen. Da du ja Kolin kannst sollte das für dich kein Thema sein.
Für das Erstellen der Arrayliste ohne DB hätte ich vielleicht einen Import für eine CSV Datei geschrieben.
Die dann in den Ressourcen oder Assets mitgeben und dann zu Laufzeit eingelesen.
Somit konntest du mit Excel die Daten erfassen daraus ein CSV Datei und die der App mitgeben.
Bei Datenbanken sollte man sich auch überlegen wie und welche Tabellen man braucht und wie die dann in Beziehung stehen müssen.
Um Redundanzen zu vermeiden.
Also die Entitäten und Relationen 1->1 / 1->n / m->n
Schaue dir Tutoriell zu DB Design und SQL an.
Wenn du es mit Eine DB machst. Kommt ja die Liste aus der DB Abfrage.
Die Liste Haltestellen könntet du aus dem Cursor den du von der DB Abfrage bekommst bilden.
Dazu ist es sinnvoll sich erst mal mit Datenbanken und SQL zu beschäftigen wenn du es wirklich mit DB machen willst. Was ich sinnvoller finde.
Kannst du zumindest die Grundlagen von SQL ?
Zitatnur das ich die Suchanfragen nicht verfeinern kann wie ich es gerne hätte.
Und da hilft dir die DB mit einer sinnvollen Abfrage bekommst du genau die Liste zurück die du haben willst.
Das setzt natürlich eine gutes DB Model , Struktur voraus. Es wird nicht immer so sein das in der DB alles in einer Tabelle ist.
Eine SQL Abfrage muss sich nicht auf nur eine Tabelle beziehen, Thema Joins.
Das was du aus der abfrage zurückbekommst und in RV anzeigst muss nicht nur in einer DB Tabelle sein.
Du wist dich sicherlich auch etwas mit SQL und DB-Strukturen beschäftigen müssen.
Natürlich kannst du in Android auch eine Offline lokale DB erstellen.
Dad ist ja in Android schon Integriert und zwar die „SQLite“ DB.
Wie du darauf zugreifst, das kannst direkt machen besser ist den SQLiteOpenHelper zu benutzen.
Noch sinnvoller ist es Room zu benutzen. Das ist ein Framework API die sich auch gut in das MVVM Pattern einfügt so das du auch später leichter umstellen kannst.
Das wird von Google auch empfohlen.
Dies könnte was für dich sein.
Db offline außerhalb von Android erstellen schwierig da du sie nicht so einfach in dein Handy importieren kannst. Da die DB-Datei die erstellt wird in einen Geschützen Bereich ist in den du ohne Root Rechte nicht rankommst.
Du könnest die Datei aber in den Assets mitgeben solltest sie aber beim ersten APP Start aus den Assets in den APP Speicher kopieren da auf die Assets nur gelesen werden kann nicht geschrieben.
Zum Anzeigen würde ich heute nicht mehr das ListView benutzen dafür ist das RecyclerView besser geeignet auf jedenfalls performanter.
Bei 1200 Einträgen sicherlich.
Gibt es in deinem Unternehme schon eine DB die du nutzen kannst?
Wird vielleicht auch schon eine API angeboren die du nutzen kannst darfst?
Hallo und Willkommen im Forum.
Wenn du so ein Projekt vor hast sollte auch erst mal etwas Planung erfolgen.
Lassen wir erst mal die Programmierung der Oberfläche GUI beiseite.
Du willst ein Datenbank zum Speicher der Daten.
Was hast du da bis jetzt? An was genau hast du dabei gedacht?
Ich gehe mal davon aus du bei diesen Projekt nicht an eine Lokal in Handy gehaltne Sqlite DB denkst.
Sonder etwas Server basierendes. Denn es soll doch bestimmt mehren Usern zugänglich sein und wenn Änderungen kommen solle sie alle sehr Zeitnah bekommen. Vielleicht sollen auch User was ändern dürfen und nicht nur der Admin.
Da stellt sich schon die erste Frage ein Klassische relationale DB ( MySQL …)
oder eine NoSQL zb. (Firebase, MongoDB, …)
Auch der zugriff auf die DB sollte überdacht werden, ein direkter zugriff auf eine mySQL auf dem Server ist aus Datenschutz nicht zu empfehlen.
Da sollte man überlegen welches Backend API (REST) dafür man benutz.
Auch ist es erst mal sinnvoll sich Gedanken über die DB Struktur zumachen.
Ein DB Model entwerfen. Also Entitäten Relationen ....
Was davon hast du bis jetzt?
Du könntest mit Hilfe des FragmentManager und
findFragmentById das geladne Layout prüfen
oder vergibt dem Fragment ein „TAG“ und prüfst mit findFragmentByTag.
Bekommst du was zurück wird das Fragment aktiv sein wenn Null zurück kommt wird es Inaktiv sein.
@Override
public void onBindViewHolder(@NonNull EntryViewHolder holder, int position) {
// Determine which tankstelle (gas station) the entry belongs to
holder.priceTextView.setText(lagerhausEntries.get(position).getPrice());
holder.fuelTypeTextView.setText(lagerhausEntries.get(position).getFuelType());
// ....
//alle 15
}
Alles anzeigen
Das mit dem getItemViewType ist mist und brauchst du in deinem Fall auch nicht.
Du willst doch alle Felder von deinem layout füllen. Also musst du das auch auf einmal in der
onBindViewHolder -> bindEntry Methode machen ohne den getItemView…
Da musst du allen TextView bei einem durchlauf setzen.
Und der Rückgabewert getItemCount() ist nur die Anzahl einer Liste.
also wenn in einer Liste 10 sind ist der Wert auch nur 10 und nicht 30
ZitatIch möchte jeweils den letzten Eintrag der 3 Listen im entry_item_layout ausgeben.
Wenn du nur den letzten Eintag in der Liste ausgeben willst dann Brauchst du doch gar kein Recyclerview.
getItemViewType ist sicher nicht das was du eigentlich willst.
Zitatich möchte gerne in einem Recyclerview Item den letzten Eintrag von jeweils 3 Array Listen ausgeben.
Das heist für mich du willst die Liste von unten nach oben durch gehen.
Zitateinem Recyclerview Item ausgegeben werden sondern die Einträge verteilt werden auf die nächsten Recyclerviews.
Du hast nur ein Recyclerview nicht mehrere.
So wie ich es sehen hasst du alle angaben der drei Listen in einem Item. In deinem Layout R.layout.entry_item_layout sind bestimmt 16 TextViews enthalten. Das Ist dann für das Recycler ein Eintrag eine Pos.
somit ist auch die Rückgabe der Anzahl der Items falsch „getItemCount()“
Da reicht die Anzahl einer Liste. wenn in der Liste 10 Einträge sind werden es auch nur 10 Zeilen sein. Auch wenn dein Layout vielleicht 5 Zeilen hat für das Recycler ist es eine Pos.
zeige mal das Layout
Wenn ich falsch liege beschreibe dein Problem genauer.
Zitat
Gibt dir was zurück und zwar das geänderte Bitmap. Aber das geht ja bei dir ins lehre.
Für dein PDF benutzt du weiter das Original und nicht das geänderte Bitmap.
Lese die Doku zu Bitmap.
this@MainActivity?
Solange du in der Activity Klasse bist kannst du das so benutzen aber außerhalb nicht.
fun check(co : Context) : Boolean {
return (Build.VERSION.SDK_INT < 31 ||
ContextCompat.checkSelfPermission( co ,Manifest.permission.BLUETOOTH_CONNECT) == PackageManager.PERMISSION_GRANTED)
}
return (Build.VERSION.SDK_INT < 31 PERMISSION_GRANTED)