Italian I tre pannelli

Discussion in 'Italian Forum' started by fabio_linate_milano, Jul 20, 2015.

  1. fabio_linate_milano

    fabio_linate_milano Member Licensed User

    Volevo lavorare su un progetto che ho in testa: una specie di cartellone (dentro una scrollview 2d)con delle celle disposte a matrice, e dentro ognuna cella una situazione complessa (tipicamente imageview, label spinner e edittext.
    Ho realizzato un primo prototipo semplificato.
    Questo
    [​IMG]
    Ho definito due layout: main e cella.
    main contiene tre panel, cella il contenuto di ogni cella.
    All'inizio carico main nel layout principale e cella in ognuno dei tre panel e provvedo a "generate members" per entrambe.
    Questo è il codice:

    Code:
    Sub Globals
        
    'These global variables will be redeclared each time the activity is created.
        'These variables can only be accessed from this module.

        
    'view statiche definite nel layout main
        Private alto As Panel
        
    Private basso As Panel
        
    Private centro As Panel
        
    'view statiche definite nel layout cella
        Private figura As ImageView
        
    Private tipologia As Spinner
        
    Private titolo As Label
       
    End Sub

    Sub Activity_Create(FirstTime As Boolean)

        
    Dim s As Spinner
       
        
    'Do not forget to load the layout file created with the visual designer. For example:
        Activity.LoadLayout("main")
       
        alto.LoadLayout(
    "cella")
        centro.LoadLayout(
    "cella")
        basso.LoadLayout(
    "cella")
       
        tipologia.AddAll(
    Array As String("gennaio""febbraio""marzo"))
        s = centro.GetView(
    1)
        s.AddAll(
    Array As String("aprile""maggio""giugno"))

    End Sub
    tipologia ad esempio denota lo spinner, quando lo uso agisce solo sull'ultimo pannello caricato.
    Se voglio caricare lo spinner del pannello centrale uso:
    s = centro.GetView(1)
    s.AddAll(Array As String("aprile", "maggio", "giugno"))
    c'è la possibilità di interagire in modo simbolico?
    ad esempio con una notazione tipo
    centro.tipologia.addall( ...

    un saluto a tutti
    fabio milano
     

    Attached Files:

  2. LucaMs

    LucaMs Expert Licensed User

    Dopo alcuni "screzi" con un cretino presuntuoso e con il titolare di questo sito, io risponderò per dare una mano a qualche italiano solo su b4xitaliangroup.

    Se vuoi, puoi pubblicare la tua domanda là.

    Sorry
     
  3. klaus

    klaus Expert Licensed User

    The problem with your code is that the Views in the cella layout have all the same name.
    This means that you have several instances of the same view, if you use the name only the last instance will be considert.

    I am convinced that it would be more efficient to add everything in the code in a For / Next loop.
    That way you can:
    - Dim and initialize the Views.
    - Set their properties.
    - Fill the Spinner in the loop.
    - etc.
    Doing this, if you know the number of entries, you could even define arrays for the different Views and initialize those in the For / Next loop and access them knowing their index.
     
    MarcoRome likes this.
  4. picenainformatica

    picenainformatica Active Member Licensed User

    Se usi lo spinner più di una volta, o anche altri oggetti, devi rifare la Dim ad ogni nuova istanza. In questo caso dovresti usare tre layout o caricare gli oggetti da codice.
     
  5. LucaMs

    LucaMs Expert Licensed User

    Se invece vuoi fare tutto MOLTO più velocemente e meglio, usa la classe CheckList o CustomListView.
     
  6. fabio_linate_milano

    fabio_linate_milano Member Licensed User

    Salve a tutti

    grazie per tutte le risposte che ho ricevuto (che ahime in parte ho capito e in parte no!)
    Nel prototipo che ho preparato ci sono solo 3 pannelli ma l'idea finale presenterà (se mai riuscirò ad implementarla) un area con un numero di pannelli abbastanza elevato (che, in aggiunta, potranno essere aggiunti o tolti dinamicamente).
    Il layout esterno quindi non è statico e dovrà per forza essere gestito da codice.
    Ma quello interno cioè quello che "metto" dentro una singola cella (per un discorso di eleganza/leggibilità software/...) mi piacerebbe poterlo preparare con il designer con i nomi delle view ben specificati e poter accedere alle view dentro una cella con il riferimento simbolico e cioè il nome della view.
    Quando faccio addview dentro il designer il nome della view deve essere "esatto", posso chiamarla label1 ma non label1(i) e cioè associarla in qualche modo ad un vettore.
    Mi sembra di capire che la CustomListView sia adatta allo scopo, non è facile da capire, ho iniziata a studiarla.
    Può la custom ListView risolvere problemi di questa natura?

    un saluto a tutti
    da una afosa milano
     
  7. LucaMs

    LucaMs Expert Licensed User

    Io ho usato CheckList, più che CustomListView.

    A dispetto del nome, non è una ListView con in aggiunta la possibilità di inserire una CheckBox, è come la CustomListView, ovvero una ListView nella quale, anziché poter mettere solo i testi dentro a due label, puoi creare ogni item come ti pare.

    Se prendi l'esempio allegato al post relativo, vedrai che è molto semplice; non dovrai fare altro che modificare secondo le tue esigenze la routine che costruisce l'item (CreateItem).
     
    Last edited: Jul 21, 2015
  8. fabio_linate_milano

    fabio_linate_milano Member Licensed User

    Grazie
    mi metto al lavoro

    un saluto
    fabio milano
     
Loading...