JavascriptProva

martedì 6 settembre 2016

J-Communicator: ricostruzione delle funzioni che prelevano le immagini dal database in occasione di un problema nello scrolling.

Proviamo a ricostruire pezzo per pezzo la funzione che carica le immagini dal database.
Intanto salvo qui i codici di refreshScreen e di leggiDaDatabase.
    //Ricarica la schermata.
    private void refreshScreen(){
        mainLayout.removeAllViews();
        try{
            leggiDaDatabase(currentCat);
        } catch(Exception e){}
        txtBarraCategoria.setText(currentCat);
    }

    private void leggiDaDatabase(String categoria){
        Cursor crs=helper.query(categoria);
        do{
            LinearLayout layout=new LinearLayout(this);

            //crea la TextView ETICHETTA
            TextView txtEtichetta=new TextView(this);
            txtEtichetta.setText(crs.getString(1));
            txtEtichetta.setHeight(30);
            txtEtichetta.setSingleLine(false);
            layout.addView(txtEtichetta);

            //crea la TextView CATEGORIA
            TextView txtCategoria=new TextView(this);
            txtCategoria.setText(crs.getString(2));
            //...che non deve occupare spazio.
            txtCategoria.setVisibility(View.GONE);
            layout.addView(txtCategoria);


            //crea la ImageView IMMAGINE
            ImageView imageView=new ImageView(this);

            imageView.setImageBitmap(Funzioni.StringToBitmap(crs.getString(3)));
            layout.addView(imageView);
            imageView.getLayoutParams().width=100;
            imageView.getLayoutParams().height=100;

            //crea la TextView TIPO
            TextView txtTipo=new TextView(this);
            txtTipo.setText(crs.getString(4));
            //...che non deve occupare spazio
            txtTipo.setWidth(0);
            txtTipo.setHeight(0);
            txtTipo.setVisibility(View.GONE);
            layout.addView(txtTipo);

            //marca le views di tipo "categoria".Utile metterci il modello
            //grafico di cartella predeterminato.
            if(txtTipo.getText().equals("categoria")){
                GradientDrawable gd=new GradientDrawable();
                gd.setColor(Color.WHITE);
                gd.setStroke(5, Color.RED);
                layout.setBackground(gd);
            }
            else{
                layout.setBackgroundColor(Color.WHITE);
            }

            layout.setOrientation(LinearLayout.VERTICAL);
            RelativeLayout.LayoutParams params=new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
            params.leftMargin=crs.getInt(5);
            params.topMargin=crs.getInt(6);
            params.rightMargin=-250;
            params.bottomMargin=-250;
            layout.setLayoutParams(params);
            layout.setGravity(1);
            //layout.setOnTouchListener(onTouchListener);
            mainLayout.addView(layout);
            if(txtTipo.getText().equals("categoria")){
                layout.getLayoutParams().width=imageView.getLayoutParams().width+20+10;
            }else{
                layout.getLayoutParams().width=imageView.getLayoutParams().width+20;
            }
            layout.getLayoutParams().height=imageView.getLayoutParams().height+35;
        } while(crs.moveToNext());
    }
Bene.
Ora ricostruisco la seconda.

Ecco:
    //Ricarica la schermata.
    private void refreshScreen(){
        mainLayout.removeAllViews();
        try{
            leggiDaDatabase(currentCat);
        } catch(Exception e){}
        txtBarraCategoria.setText(currentCat);
    }

    private void leggiDaDatabase(String categoria){
        Cursor crs=helper.query(categoria);
        do{
            View view=new View(this);
            RelativeLayout.LayoutParams params= new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT);
            params.width=100;
            params.height=100;
            params.topMargin=crs.getInt(6);
            params.leftMargin=crs.getInt(5);
            view.setLayoutParams(params);
            view.setBackgroundColor(Color.WHITE);
            mainLayout.addView(view);
        } while(crs.moveToNext());
    }
Con questo codice, lo scrolling funziona.

Non so dove diavolo sia il motivo per cui copiando la funzione del vecchio programma lo scrolling non funzionasse... ma meglio rigenerare il tutto e, con l'occasione, fare quelle immagini un attimino più eleganti.

Ma un momento! C'è tutta una serie di sviluppi possibili per rifare quelle immagini del vecchio programma, che in effetti facevano letteralmente cacare...

Nessun commento:

Posta un commento