German Auswahlliste

peternmb

Well-Known Member
Licensed User
Longtime User
Hallo,

gibt es ein Control (ähnlich dem FileDialog) um aus einer Liste eine bestimmte Auswahl zu treffen?

Die Daten liegen als Textdatei vor. Ich kann das alles in ein ListView einlesen aber wie funktioniert dann die Auswahl???

B4X:
  'Datei laden
  Dim SpielVar As List  
  SpielVar = File.readlist(oListDir,"Mitspieler.txt")
  'gespeicherte Werte eintragen
  Dim Mitspieler As ListView
  Mitspieler.Initialize("Mitspieler")
  For i=0 To SpielVar.Size -1
     Mitspieler.AddSingleLine(SpielVar.Get(i)) 
  Next
  '
  Dim CD As CustomDialog
  CD.AddView(Mitspieler, 0, 0, 40%x, 100%y) 
  '   
  ret = CD.show("Mitspieler in Datenbank suchen","auswählen", "abbrechen", "löschen",Bild2)   
  '
  If ret = DialogResponse.POSITIVE Then
   
   ' ???
   
  End If
 

klaus

Expert
Licensed User
Longtime User
Es gibt mehrere Möglichkeiten, die kommen aber darauf an was du anzeigen willst und wie.
Ich würde die Mitspieler in einen Spinner laden der hat für mich folgende Vorteile braucht wenig Platz und zeigt direkt den gewählten Wert.
Zu Deiner Frage, wenn Du wirklich mit einem CustoDialog arbeiten willst musst Du das ListView_ItemClick Event auswerten und den gewählten Wert zwischen speicher und dann übergeben mit :
B4X:
Sub Mitspieler_ItemClick(Position As Int,  Value as Object)
    MitspielerIndex = Position
End Sub
'
'
If ret = DialogResponse.POSITIVE Then
    GewählterMitspieler = SpielVar.Get(MitspielerIndex)
End If
Ohne Gewähr, habe es nicht getestet.

Beste Grüsse.
 

peternmb

Well-Known Member
Licensed User
Longtime User
ja, es ist mir klar, dass dafür der Spinner ein geeignetes Mittel wäre.

Da ich aber (steht in einem anderen Beitrag) Probleme mit Spinnern unter Android 4.0.3 und dem (recht verbreiteten) Samung Galaxy Tab habe, möchte ich den eben nicht einsetzen.

ListView_ItemClick Event ist vermutlich genau das, was ich gesucht habe.
Ich denke damit kann ich das so anzeigen lassen wie ich es gerne hätte.

Vielen Dank.
 

peternmb

Well-Known Member
Licensed User
Longtime User
Kann ich in dem Listview die Auswahl farbig markieren?
Das müsste och auch über Mitspieler_ItemClick möglich sein.

B4X:
Sub Mitspieler_ItemClick(Position As Int,  Value as Object)
    MitspielerIndex = Position
    'jetzt noch die farbliche Kennzeichnung der Auswahl
    'soll aber nur bei einem Eintrag möglich sein
End Sub
 

peternmb

Well-Known Member
Licensed User
Longtime User
Ich möchte die Auswahl (so wie beim FileDialog) in einem Edit über dem Listview anzeigen lassen.
Es wird aber nichts angezeigt, keine Ahnung warum :sign0148:

B4X:
Sub BtnDaba1_Click
   Dim cd As CustomDialog
   Dim pnl As Panel
   pnl.Initialize("pnl")
   Dim bgnd As ColorDrawable
   bgnd.Initialize(Colors.Black, 5dip)
   pnl.Background = bgnd
   '   
   'Label oben für Namensanzeige
   EditDabei.Initialize("EditDabei")
   EditDabei.TextSize=16
   EditDabei.TextColor=Colors.Black
   EditDabei.Color=Colors.LightGray
        '      
   'gespeicherte Werte in ListView eintragen
    Mitspieler.Initialize("Mitspieler")
   For i=0 To SpielVar.Size -1
      Mitspieler.AddSingleLine(SpielVar.Get(i)) 
    Next
   '   
   pnl.AddView(EditDabei, 1%x, 0, 90%x, 34dip) 
   pnl.AddView(Mitspieler, 0, 35, 100%x, 100%y) 
    ' 
   cd.AddView(pnl, 0, 0, 40%x, 80%y) 
   '
   ret = cd.show("Suche in Datenbank","übernehmen", "abbrechen", "löschen",Bild2)   
    '
    If ret = DialogResponse.POSITIVE Then
     edtSpieler1.Text = Mitspieler.GetItem(MitspielerIndex)
   End If
End Sub


Sub Mitspieler_ItemClick(Position As Int,  Value As Object)
   MitspielerIndex = Position
   EditDabei.Text = Mitspieler.GetItem(MitspielerIndex)   'Namen ins Edit oben eintragen
   DoEvents
End Sub
 

klaus

Expert
Licensed User
Longtime User
Mensch machst Du dir das Leben schwer.
Du hast von zwei verschiedenen Benutzer den gleichen Rat bekommen 'Spinner' zu benutzen der genau das macht was Du brauchst warum willst Du das nicht verwenden?

Um eine konkrete Antwort auf die letzte Frage zu bekommen musst Du dein Pojekt als zip Datei posten.
Nur ein Codesnippet zu zeigen und sagen es wird nichts angezeigt reicht leider nicht.
Damit wir testen können was Du wie gemacht hast brauchen wir das Projekt.

Beste Grüsse.
 

peternmb

Well-Known Member
Licensed User
Longtime User
Mein Problem scheint (wieder mal) das modale Fenster beim CustomDialog zu sein.
Wenn ich alles statt dessen auf einem Panel anzeige funktioniert es wie gewünscht.
Kann ich beim Anzeigen eines Panels den Hintergrund abdunkeln wie es z.B. beim CustomDialog der Fall ist?

ja, es ist mir klar, dass dafür der Spinner ein geeignetes Mittel wäre.
Da ich aber (steht in einem anderen Beitrag) Probleme mit Spinnern unter Android 4.0.3 und dem (recht verbreiteten) Samung Galaxy Tab habe, möchte ich den eben nicht einsetzen.
Allerdings treten diese Problem auch nur beim CustomDialog - da allerdings immer - auf.
Ich verstehe somit so langsam warum du den nicht oder nur selten einsetzt :(
 

peternmb

Well-Known Member
Licensed User
Longtime User
Kann ich beim Anzeigen eines Panels den Hintergrund abdunkeln wie es z.B. beim CustomDialog der Fall ist?

Konnte ich mittlerweile selber lösen.
Ich lege mein Panel einfach auf ein anderes, das halbtransparent ist:
B4X:
Dim PnlBlack As Panel
PnlBlack.Initialize("PnlBlack")
Dim bgnd As ColorDrawable
bgnd.Initialize( Colors.ARGB(155,0,0,0),0)
PnlBlack.Background = bgnd
 

peternmb

Well-Known Member
Licensed User
Longtime User
Du kannst auch für das halbtransparente Panel eine leere Touch Event Routine erstellen die vermeided dass darunter liegende Views auf Benutzereingaben reagieren.

Beste Grüsse.

Eine gute Idee, aber wie mache ich das?
So erhalte ich eine Fehlermeldung:
B4X:
Sub PnlBlack_Touch
 
End Sub

Fehlermldung:
sub pnlblack_touch signature does not match expected signature

Wo finde ich eigentlich die Events, die ich abfragen kann z.B. Click oder Touch oder ???
 

klaus

Expert
Licensed User
Longtime User
Du solltest Dir agrahams B4A HelpViewer runterladen.
Das ist für mich ein 'must to have' Programm.

Versuche es mal so:
- Schreibe Sub
- Ein Leerzeichen
- Tab drücken, da bekommst Du alle Views zu auswählen
- View auswählen
- dann bekommst Du die möglichen Events für die gewählte View
- Den Namen des Events eingeben.

Beste Grüsse.
 

peternmb

Well-Known Member
Licensed User
Longtime User
Du solltest Dir agrahams B4A HelpViewer runterladen.
Das ist für mich ein 'must to have' Programm.
Ja, das habe ich von Anfang an auf dem Desktop liegen - nutze es aber anscheinend zu wenig :signOops:

PS.: und wenn ich bei der leeren Routine die im Help-Viewer angezeigten Parameter mit angebe dann klappt es auch :sign0060:
B4X:
Sub PnlBlack_Touch (Action As Int, X As Float, Y As Float)
 
End Sub
 
Top