Autore Topic: Listbox con RadioGroup  (Letto 735 volte)

Offline massimilianochiodi

  • Nuovo arrivato
  • *
  • Post: 5
  • Il software è come il sesso, è meglio quando è lib
  • Respect: 0
    • Mostra profilo
    • Lavori miei
  • Dispositivo Android:
    ALCATEL ONETOUCH
  • Sistema operativo:
    Mac OS 10.9
Listbox con RadioGroup
« il: 27 Aprile 2014, 13:20:57 CEST »
0
Stò impazzendo ormai da settimane

Vediamo se c'è qualche SANTO che riesce ad aiutarmi a trovare una soluzione per realizzare questa listview.



Da tenere presente che i test sono 12 ma sono su un db sqlite,
Il test più lungo è costituito da 567 domande
Quello più corto da 20 domande

Acuni test sono con risposte di 2 dimensioni (Vero / Falso) oppure (Si/No)
Altri sono costituite da 4 o 5 risposte con risposte che sono fisse per tutto il test es. ( Sempre, moltissimo, molto, poco, mai )
Uno è costituito da 3 risposte variabili es. (Si, Non so, No), (fatto, non so, mai fatto) etc
Quindi i radiobutton possono essere da 2 a 5.
Massimiliano.

Offline massimilianochiodi

  • Nuovo arrivato
  • *
  • Post: 5
  • Il software è come il sesso, è meglio quando è lib
  • Respect: 0
    • Mostra profilo
    • Lavori miei
  • Dispositivo Android:
    ALCATEL ONETOUCH
  • Sistema operativo:
    Mac OS 10.9
Re:Listbox con RadioGroup
« Risposta #1 il: 10 Maggio 2014, 08:39:04 CEST »
0
Sono riuscito alla fine ad ottenere la ListView come la volevo

L'unico problema è che quando vengono compilati i vari RadioButton, effettuando lo scroll ne perdo i valori
Qualcuno ha l'antidoto per questo problema ?
Massimiliano.

Offline Aaaaabbbb

  • Utente junior
  • **
  • Post: 55
  • Respect: +3
    • Google+
    • pietmau
    • Mostra profilo
  • Dispositivo Android:
    Nexus 7, Samsung GT-S5830i, LG Optimus, Galaxy Tab 3
  • Play Store ID:
    aaaaaaaaaaaa
  • Sistema operativo:
    Win, Ubuntu
Re:Listbox con RadioGroup
« Risposta #2 il: 10 Maggio 2014, 18:15:25 CEST »
0
Usi la convertView nel tuo adapter?

Se la togli (=non la usi affatto) dovrebbe salvarti i valori.

Fammi sapere!

Ciao

Offline massimilianochiodi

  • Nuovo arrivato
  • *
  • Post: 5
  • Il software è come il sesso, è meglio quando è lib
  • Respect: 0
    • Mostra profilo
    • Lavori miei
  • Dispositivo Android:
    ALCATEL ONETOUCH
  • Sistema operativo:
    Mac OS 10.9
Re:Listbox con RadioGroup
« Risposta #3 il: 10 Maggio 2014, 20:52:46 CEST »
0
Guarda, tieni conto che Sono Disabile, per me qualsiasi cosa semplice diventa difficile...
Conosco pochissimo JAVA, anzi non lo conosco affatto.

Comunque no, l'adapter che utilizzo non usa la funct. 'convertView'

Provo a postarti il codice ...

Fragment Somministrazione - è la schermata principale che contiene la ListView

Codice (XML): [Seleziona]
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:paddingLeft="10dp"
   android:paddingRight="10dp"
   android:paddingTop="6dp"
   android:paddingBottom="6dp"
   tools:context="com.chiodimassimiliano.koalacompiler.app.somministrazione$PlaceholderFragment"
   android:orientation="vertical"
   android:id="@+id/llayout">

    <TextView
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="Prego compilare le sottoelencate domande premendo su 'Vero' o 'Falso'"
       android:id="@+id/descrizionetesto" />

    <Button
       style="?android:attr/buttonStyleSmall"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="Invia i dati"
       android:id="@+id/button"
       android:textAlignment="center"
       android:layout_gravity="center_horizontal" />

    <ListView
       android:id="@+id/domandeListView"
       android:layout_width="fill_parent"
       android:layout_height="fill_parent">
    </ListView>


</LinearLayout>

Fragment somministrazione_righe - è la custom ListView

Codice (XML): [Seleziona]
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:paddingLeft="10dp"
   android:paddingRight="10dp"
   android:paddingTop="6dp"
   android:paddingBottom="6dp"
   tools:context="com.chiodimassimiliano.koalacompiler.app.somministrazione_righe$PlaceholderFragment"
   android:orientation="vertical"
   android:id="@+id/llayout">


    <LinearLayout
       android:orientation="horizontal"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content">

        <TextView
           android:layout_width="40dp"
           android:layout_height="wrap_content"
           android:textAppearance="?android:attr/textAppearanceSmall"
           android:text="000"
           android:id="@+id/domandabiddomanda"
           android:singleLine="false"
           android:textStyle="bold"
           android:textColor="#FF0000"
           android:layout_marginTop="5dp" />

        <TextView
           android:layout_width="fill_parent"
           android:layout_height="wrap_content"
           android:textAppearance="?android:attr/textAppearanceSmall"
           android:text="Mi piacciono le riviste di meccanica, solitamente dormo inpiedi"
           android:id="@+id/domandabidtesto"
           android:textStyle="bold"
           android:singleLine="false" />
    </LinearLayout>


    <RadioGroup
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:orientation="horizontal">


        <RadioButton
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="Vero"
           android:id="@+id/domandabidvero"
           android:singleLine="true"
           android:textSize="12dp" />

        <RadioButton
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="Falso"
           android:id="@+id/domandabidfalso"
           android:singleLine="true"
           android:textSize="12dp" />

    </RadioGroup>

</LinearLayout>

Sorgente di somministrazione
Codice (Java): [Seleziona]
package com.chiodimassimiliano.koalacompiler.app;

/**
 * Created by potyno on 09/05/14.
 * Release del 10/05/2014, dopo 1'000'000 di tentativi ho deciso di farmi suora....
 */


import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.util.Log;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public class somministrazione extends Activity {
    public static String tipotest = "";
    public static String descrizione = "";
    public int tipoframe = 0;
    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment_somministrazione);
        int testtipo = getIntent().getIntExtra("test",0);
        final TextView descrizionetest = (TextView) findViewById(R.id.descrizionetesto);

        // tipoframe 1 : vero/falso - 2 :
        // tipoframe 2 : scl90r
        // tipoframe 3 : bigfive
        // tipoframe 4 : copenvi
        // tipoframe 5 : 16pf5
        // tipoframe 6 : cbave
        // tipoframe 7 : tas20
        // tipoframe 8 : staix

            switch (testtipo) {
                case 1:
                tipotest = "2";
                descrizione = "MMPI-2 : Prego compilare il test indicando Vero o falso";
                tipoframe = 1;


            case 2:
                tipotest = "3";
                descrizione = "MMPI-2 Basic Form : Prego compilare il test indicando Vero o falso";
                tipoframe = 1;
                break;

            case 3:
                tipotest = "A";
                descrizione = "MMPI-A : Prego compilare il test indicando Vero o falso";
                tipoframe = 1;
                break;

            case 4:
                tipotest = "4";
                descrizione = "MMPI-A Basic : Prego compilare il test indicando Vero o falso";
                tipoframe = 1;
                break;

            case 5:
                tipotest = "M";
                descrizione = "MCMI-III : Prego compilare il test indicando Vero o falso";
                tipoframe = 1;
                break;

            case 6:
                tipotest = "S";
                descrizione = "SCL-90-R : Prego compilare il test indicando 1-Per niente, 2-Un poco, 3-Moderatamente, 4-Molto, 5-Moltissimo";
                tipoframe = 2;
                break;

            case 7:
                tipotest = "C";
                descrizione = "COPE NVI : Prego compilare il test indicando 1-Di solito non lo faccio, 2-Lo faccio qualche volta, 3-Lo faccio con una certa frequenza, 4-Lo faccio quasi sempre";
                tipoframe = 3;
                break;

            case 8:
                tipotest = "B";
                descrizione = "BIG FIVE : Prego compilare il test indicando 1-Assolutamente vero, 2-Abbastanza vero, 3-Nè vero nè falso, 4-Piuttosto falso, 5-Abbastanza falso";
                tipoframe = 2;
                break;

            case 9:
                tipotest = "T";
                descrizione = "TAS 20 : Prego compilare il test indicando 1-Non sono per niente daccordo, 2-Non sono molto daccordo, 3-Non sono nè daccordo nè in disaccordo, 4-Sono daccordo in parte, 5-Sono completamente daccordo";
                tipoframe = 2;
                break;

            case 10:
                tipotest = "P";
                descrizione = "16-PF-5 : Prego compilare il test indicando la risposta appropriata";
                tipoframe = 6;
                break;

            case 11:
                tipotest = "V";
                descrizione = "CBA-VE : Prego compilare il test indicando 1-Per nulla, 2-Poco, 3-Abbastanza, 4-Molto, 5-Moltissimo";
                tipoframe = 2;
                break;

            case 12:
                tipotest = "Y";
                descrizione = "STAI-Y : Prego compilare il test indicando 1-Per nulla, 2-Un pò, 3-Abbastanza, 4-Moltissimo";
                tipoframe = 3;
                break;

        }

        // imposto il titolo della form
        descrizionetest.setText(descrizione);

        if (tipoframe == 1) {
            ArrayList<domandabid> domandeList = new ArrayList<domandabid>(); //lista delle domande che voglio visualizzare

            dbHelper databaseHelper = new dbHelper(this);

            // Reading all contacts

            List<domandetable> domande = databaseHelper.getAlldomande(tipotest);

            for (domandetable cn : domande) {

                domandeList.add(new domandabid(cn.getDomanda(), cn.getTesto(), false, false));
            }

            ArrayList<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();


            for (int i = 0; i < domandeList.size(); i++) {
                domandabid p = domandeList.get(i);// per ogni domanda dell'elenco bid

                HashMap<String, Object> domandeMap = new HashMap<String, Object>();//creo la mappa di valori

                domandeMap.put("domanda", p.getDomanda()); // il numero della domanda
                domandeMap.put("testo", p.getTesto()); // il testo della domanda
                domandeMap.put("vero", p.getVero());// il valore vero
                domandeMap.put("falso", p.getFalso());// il valore vero

                data.add(domandeMap);  //aggiungiamo la mappa di valori alla sorgente dati
            }
            // chiudo il db dopo la lettura
            databaseHelper.close();

            String[] from = {"domanda", "testo", "vero", "falso"}; //dai valori contenuti in queste chiavi
            int[] to = {R.id.domandabiddomanda, R.id.domandabidtesto, R.id.domandabidvero, R.id.domandabidfalso};//agli id delle view

            //costruzione dell adapter
            SimpleAdapter adapter = new SimpleAdapter(
                    getApplicationContext(),
                    data,//sorgente dati
                    R.layout.fragment_somministrazione_righe, //layout contenente gli id di "to"
                    from,
                    to);

            //utilizzo dell'adapter
            ((ListView) findViewById(R.id.domandeListView)).setAdapter(adapter);
        }


        // ***
        // *
        // *  TEST 1-2-3-4-5 OPPURE 5-4-3-2-1 OPPURE 0-1-2-3-4
        // *
        // ***
        if (tipoframe == 2) {
            ArrayList<domandad5> domandeList = new ArrayList<domandad5>(); //lista delle domande che voglio visualizzare

            dbHelper databaseHelper = new dbHelper(this);

            // Reading all contacts

            List<domandetable> domande = databaseHelper.getAlldomande(tipotest);

            for (domandetable cn : domande) {
                if (testtipo == 6 || testtipo == 9) {
                    domandeList.add(new domandad5(cn.getDomanda(), cn.getTesto(), "1", "2","3","4","5"));
                }

                if (testtipo == 8) {
                    domandeList.add(new domandad5(cn.getDomanda(), cn.getTesto(), "5", "4","3","2","1"));
                }

                if (testtipo == 11) {
                    domandeList.add(new domandad5(cn.getDomanda(), cn.getTesto(), "0", "1","2","3","4"));
                }

            }

            ArrayList<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();


            for (int i = 0; i < domandeList.size(); i++) {
                domandad5 p = domandeList.get(i);// per ogni domanda dell'elenco bid

                HashMap<String, Object> domandeMap = new HashMap<String, Object>();//creo la mappa di valori

                domandeMap.put("domanda", p.getDomanda()); // il numero della domanda
                domandeMap.put("testo", p.getTesto()); // il testo della domanda
                domandeMap.put("rispa", p.getRispa());// il valore vero
                domandeMap.put("rispb", p.getRispb());// il valore vero
                domandeMap.put("rispc", p.getRispc());// il valore vero
                domandeMap.put("rispd", p.getRispd());// il valore vero
                domandeMap.put("rispe", p.getRispe());// il valore vero


                data.add(domandeMap);  //aggiungiamo la mappa di valori alla sorgente dati
            }
            // chiudo il db dopo la lettura
            databaseHelper.close();

            String[] from = {"domanda", "testo", "rispa", "rispb", "rispc", "rispd", "rispe"}; //dai valori contenuti in queste chiavi
            int[] to = {R.id.domandabiddomanda, R.id.domandabidtesto, R.id.domandabidrispa, R.id.domandabidrispb, R.id.domandabidrispc, R.id.domandabidrispd, R.id.domandabidrispe};//agli id delle view

            //costruzione dell adapter
            SimpleAdapter adapter = new SimpleAdapter(
                    getApplicationContext(),
                    data,//sorgente dati
                    R.layout.fragment_somministrazione_d5, //layout contenente gli id di "to"
                    from,
                    to);

            //utilizzo dell'adapter
            ((ListView) findViewById(R.id.domandeListView)).setAdapter(adapter);
        }


        if (tipoframe == 3) {
            ArrayList<domandad4> domandeList = new ArrayList<domandad4>(); //lista delle domande che voglio visualizzare

            dbHelper databaseHelper = new dbHelper(this);

            // Reading all contacts

            List<domandetable> domande = databaseHelper.getAlldomande(tipotest);

            for (domandetable cn : domande) {
                domandeList.add(new domandad4(cn.getDomanda(), cn.getTesto(), "1", "2", "3", "4"));
            }

            ArrayList<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();

            for (int i = 0; i < domandeList.size(); i++) {
                domandad4 p = domandeList.get(i);// per ogni domanda dell'elenco bid

                HashMap<String, Object> domandeMap = new HashMap<String, Object>();//creo la mappa di valori

                domandeMap.put("domanda", p.getDomanda()); // il numero della domanda
                domandeMap.put("testo", p.getTesto()); // il testo della domanda
                domandeMap.put("rispa", p.getRispa());// il valore vero
                domandeMap.put("rispb", p.getRispb());// il valore vero
                domandeMap.put("rispc", p.getRispc());// il valore vero
                domandeMap.put("rispd", p.getRispd());// il valore vero


                data.add(domandeMap);  //aggiungiamo la mappa di valori alla sorgente dati
            }
            // chiudo il db dopo la lettura
            databaseHelper.close();

            String[] from = {"domanda", "testo", "rispa", "rispb", "rispc", "rispd"}; //dai valori contenuti in queste chiavi
            int[] to = {R.id.domandabiddomanda, R.id.domandabidtesto, R.id.domandabidrispa, R.id.domandabidrispb, R.id.domandabidrispc, R.id.domandabidrispd};//agli id delle view

            //costruzione dell adapter
            SimpleAdapter adapter = new SimpleAdapter(
                    getApplicationContext(),
                    data,//sorgente dati
                    R.layout.fragment_somministrazione_d4, //layout contenente gli id di "to"
                    from,
                    to);

            //utilizzo dell'adapter
            ((ListView) findViewById(R.id.domandeListView)).setAdapter(adapter);
        }


        if (tipoframe == 6) {
            ArrayList<domandapf5> domandeList = new ArrayList<domandapf5>(); //lista delle domande che voglio visualizzare

            dbHelper databaseHelper = new dbHelper(this);

            // Reading all contacts

            List<domandetable> domande = databaseHelper.getAlldomande(tipotest);

            for (domandetable cn : domande) {

                domandeList.add(new domandapf5(cn.getDomanda(), cn.getTesto(), cn.getRispa(), cn.getRispb(), cn.getRispc()));
            }

            ArrayList<HashMap<String, Object>> data = new ArrayList<HashMap<String, Object>>();


            for (int i = 0; i < domandeList.size(); i++) {
                domandapf5 p = domandeList.get(i);// per ogni domanda dell'elenco bid

                HashMap<String, Object> domandeMap = new HashMap<String, Object>();//creo la mappa di valori

                domandeMap.put("domanda", p.getDomanda()); // il numero della domanda
                domandeMap.put("testo", p.getTesto()); // il testo della domanda
                domandeMap.put("rispa", p.getRispa());// il valore vero
                domandeMap.put("rispb", p.getRispb());// il valore vero
                domandeMap.put("rispc", p.getRispc());// il valore vero


                data.add(domandeMap);  //aggiungiamo la mappa di valori alla sorgente dati
            }
            // chiudo il db dopo la lettura
            databaseHelper.close();

            String[] from = {"domanda", "testo", "rispa", "rispb", "rispc"}; //dai valori contenuti in queste chiavi
            int[] to = {R.id.domandabiddomanda, R.id.domandabidtesto, R.id.domandabidrispa, R.id.domandabidrispb, R.id.domandabidrispc};//agli id delle view

            //costruzione dell adapter
            SimpleAdapter adapter = new SimpleAdapter(
                    getApplicationContext(),
                    data,//sorgente dati
                    R.layout.fragment_somministrazione_pf5, //layout contenente gli id di "to"
                    from,
                    to);

            //utilizzo dell'adapter
            ((ListView) findViewById(R.id.domandeListView)).setAdapter(adapter);
        }

    }
}

Sorgente di somministrazione_pf5
Codice (Java): [Seleziona]
package com.chiodimassimiliano.koalacompiler.app;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.app.ActionBarActivity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;


public class somministrazione_pf5 extends ActionBarActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_somministrazione_pf5);
        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction()
                    .add(R.id.container, new PlaceholderFragment())
                    .commit();
        }
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.somministrazione_pf5, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    /**
     * A placeholder fragment containing a simple view.
     */

    public static class PlaceholderFragment extends Fragment {

        public PlaceholderFragment() {
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_somministrazione_pf5, container, false);
            return rootView;
        }
    }
}

Parte del dbHelper
Codice (Java): [Seleziona]
public List<domandetable> getAlldomande(String tipo) {
        List<domandetable> domande = new ArrayList<domandetable>();
        // query di selezione

        String query = "SELECT tipo, domanda, testo, rispa, rispb, rispc FROM domande WHERE tipo = '" + tipo + "' ORDER BY domanda;";

        if (tipo == "3") {
            query = "SELECT tipo, domanda, testo, rispa, rispb, rispc FROM domande WHERE tipo = '2' AND domanda < 351 ORDER BY domanda;";
        }

        if (tipo == "4") {
            query = "SELECT tipo, domanda, testo, rispa, rispb, rispc FROM domande WHERE tipo = 'A' AND domanda < 351 ORDER BY domanda;";
        }


        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery(query, null);

        // looping through all rows and adding to list
        if (cursor.moveToFirst()) {
            do {
                domandetable elenco = new domandetable();
                elenco.setTipo(cursor.getString(0));
                elenco.setDomanda(cursor.getInt(1));
                elenco.setTesto(cursor.getString(2));
                elenco.setRispa(cursor.getString(3));
                elenco.setRispb(cursor.getString(4));
                elenco.setRispc(cursor.getString(5));

                // Adding contact to list
                domande.add(elenco);
            } while (cursor.moveToNext());
        }

        // ritorna il gruppo domande
        db.close();
        return domande;
    }

Bid delle domande a 3 dimensioni
Codice (Java): [Seleziona]
package com.chiodimassimiliano.koalacompiler.app;

/**
 * Created by potyno on 09/05/14.
 * E' un adapter che ritorna i dati per un test psicometrico a tre dimensioni
 */

public class domandapf5 {

    private int domanda;
    private String testo;
    private String rispa;
    private String rispb;
    private String rispc;

    public domandapf5(int domanda, String testo, String rispa, String rispb, String rispc) {
        super();
        this.domanda = domanda;
        this.testo = testo;
        this.rispa = rispa;
        this.rispb = rispb;
        this.rispc = rispc;
    }
    public int getDomanda() { return domanda; }
    public String getTesto() { return testo; }
    public String getRispa() {
        return rispa;
    }
    public String getRispb() { return rispb; }
    public String getRispc() { return rispc; }
}

Come indicato non saprei proprio perché in alcuni casi MI CANCELLA I RADIOBUTTON SELEZIONATI
Oppure i RADIOBUTTON addirittura vengono replicati.
Il fatto è che per alcuni test le righe di ListView sono parecchie..
Esempio :
MMPI-2 567 Domande
MMPI-A 487 Domande
...
TAS20 20 Domande.
Massimiliano.

Offline Aaaaabbbb

  • Utente junior
  • **
  • Post: 55
  • Respect: +3
    • Google+
    • pietmau
    • Mostra profilo
  • Dispositivo Android:
    Nexus 7, Samsung GT-S5830i, LG Optimus, Galaxy Tab 3
  • Play Store ID:
    aaaaaaaaaaaa
  • Sistema operativo:
    Win, Ubuntu
Re:Listbox con RadioGroup
« Risposta #4 il: 10 Maggio 2014, 20:59:40 CEST »
0
Come non detto,
Devi crearti un Adaper apposta.
« Ultima modifica: 10 Maggio 2014, 21:13:17 CEST da Maurizio Pietrantuono »

Offline massimilianochiodi

  • Nuovo arrivato
  • *
  • Post: 5
  • Il software è come il sesso, è meglio quando è lib
  • Respect: 0
    • Mostra profilo
    • Lavori miei
  • Dispositivo Android:
    ALCATEL ONETOUCH
  • Sistema operativo:
    Mac OS 10.9
Re:Listbox con RadioGroup
« Risposta #5 il: 10 Maggio 2014, 21:21:37 CEST »
0
Si Si, No No, Ma Ma ..
C'era l'adapter...
o per lo meno, se è quello che intendi tu...

Codice (Java): [Seleziona]
package com.chiodimassimiliano.koalacompiler.app;

/**
 * Created by potyno on 10/05/14.
 */


public class domandetable {

    //private variables
    String _tipo;
    int _domanda;
    String _testo;
    String _rispa;
    String _rispb;
    String _rispc;

    // Empty constructor
    public domandetable(){

    }
    // constructor
    public domandetable(String tipo, int domanda, String testo, String rispa, String rispb, String rispc){
        this._tipo = tipo;
        this._domanda = domanda;
        this._testo = testo;
        this._rispa = rispa;
        this._rispb = rispb;
        this._rispc = rispc;
    }

    // getting Tipo di test
    public String getTipo(){
        return this._tipo;
    }

    // getting Domanda
    public int getDomanda(){
        return this._domanda;
    }

    // getting Testo
    public String getTesto() { return this._testo; }

    public String getRispa() { return this._rispa; }

    public String getRispb() { return this._rispb; }

    public String getRispc() { return this._rispc; }

    // setting Tipo di test
    public void setTipo(String tipo){
        this._tipo = tipo;
    }

    // setting Domanda
    public void setDomanda(int domanda){
        this._domanda = domanda;
    }

    // setting Testo
    public void setTesto(String testo){
        this._testo = testo;
    }

    public void setRispa(String rispa){
        this._rispa = rispa;
    }

    public void setRispb(String rispb){
        this._rispb = rispb;
    }

    public void setRispc(String rispc){
        this._rispc = rispc;
    }


}
//
//DB = currentContext.openOrCreateDatabase(DBName, 0, null);
//        DB.execSQL("CREATE TABLE IF NOT EXISTS " +
//        tableName + "(tipo VARCHAR(1), " +
//        "domanda INT(3), " +
//        "testo TEXT, " +
//        "rispa TEXT, " +
//        "rispb TEXT, " +
//        "rispc TEXT, " +
//        "rispd TEXT, " +
//        "rispe TEXT);");

Post unito: 10 Maggio 2014, 21:23:31 CEST
Davvero, sono proprio a terra con Java e con Android,
E' poi 4-5 giorni che ci lavoro sopra, non sapevo nemmeno come installare Android Studio.
Pensa potrebbe essere una barzelletta ma manco sapevo che per funzionare aveva bisogno dell'SDK per Android...
« Ultima modifica: 10 Maggio 2014, 21:23:31 CEST da massimilianochiodi, Reason: Merged DoublePost »
Massimiliano.

Offline Aaaaabbbb

  • Utente junior
  • **
  • Post: 55
  • Respect: +3
    • Google+
    • pietmau
    • Mostra profilo
  • Dispositivo Android:
    Nexus 7, Samsung GT-S5830i, LG Optimus, Galaxy Tab 3
  • Play Store ID:
    aaaaaaaaaaaa
  • Sistema operativo:
    Win, Ubuntu
Re:Listbox con RadioGroup
« Risposta #6 il: 10 Maggio 2014, 22:18:23 CEST »
0
Purtroppo è un po'lunga da spiegare così, sorry :-(

Dovresti crearti una classe che estende SimpleAdapter,
e fare l'override del metodo getView, come viene fatto in questo tutorial http://www.anddev.it/index.php/topic,432.0.html
ma senza utilizzare e riciclare l'holder...

Offline massimilianochiodi

  • Nuovo arrivato
  • *
  • Post: 5
  • Il software è come il sesso, è meglio quando è lib
  • Respect: 0
    • Mostra profilo
    • Lavori miei
  • Dispositivo Android:
    ALCATEL ONETOUCH
  • Sistema operativo:
    Mac OS 10.9
Re:Listbox con RadioGroup
« Risposta #7 il: 11 Maggio 2014, 01:57:23 CEST »
0
Provato, implementato il tutto ma boh

Ho creato l'adapter
Codice (Java): [Seleziona]
package com.chiodimassimiliano.koalacompiler.app;

/**
 * Created by potyno on 11/05/14.
 */


        import java.util.List;

        import android.content.Context;
        import android.view.LayoutInflater;
        import android.view.View;
        import android.view.ViewGroup;
        import android.widget.ArrayAdapter;
        import android.widget.ImageView;
        import android.widget.RadioButton;
        import android.widget.TextView;

public class domandabidadapter extends ArrayAdapter<domandabid> {

    private int resource;
    private LayoutInflater inflater;

    public domandabidadapter(Context context, int resourceId, List<domandabid> objects) {
        super(context, resourceId, objects);
        resource = resourceId;
        inflater = LayoutInflater.from(context);
    }

    @Override
    public View getView(int position, View v, ViewGroup parent) {

        // Recuperiamo l'oggetti che dobbiamo inserire a questa posizione
        domandabid domande = getItem(position);

        ViewHolder holder;

        if (v == null) {
            v = inflater.inflate(resource, parent, false);
            holder = new ViewHolder();
            holder.domandaTextView = (TextView) v.findViewById(R.id.domandaTextView);
            holder.testoTextView = (TextView) v.findViewById(R.id.testoTextView);
            holder.veroRadiobutton = (RadioButton) v.findViewById(R.id.veroRadiobutton);
            holder.falsoRadiobutton = (RadioButton) v.findViewById(R.id.falsoRadiobutton);

            v.setTag(holder);
        } else {
            holder = (ViewHolder) v.getTag();
        }

        holder.domandaTextView.setText(domande.getDomanda());
        holder.testoTextView.setText(domande.getTesto());
        //holder.veroRadiobutton.setText(domande.getVero());
        //holder.falsoRadiobutton.setText(domande.getFalso());


        return v;
    }

    private static class ViewHolder {
        TextView domandaTextView;
        TextView testoTextView;
        RadioButton veroRadiobutton;
        RadioButton falsoRadiobutton;
    }
}

E ho adattato la classe per la somministrazione
Codice (Java): [Seleziona]
package com.chiodimassimiliano.koalacompiler.app;

import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.ListView;

import java.util.ArrayList;
import java.util.Random;


public class somministrazione extends Activity {

        ListView listView;
        domandabidadapter domandabidadapter;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.fragment_somministrazione);

            listView = (ListView) findViewById(R.id.domandeListView);

            domandabidadapter = new domandabidadapter(this, R.layout.fragment_somministrazione_righe,
                    new ArrayList<domandabid>());

            listView.setAdapter(domandabidadapter);

            new BackgroundWorker().execute();
        }

        private class BackgroundWorker extends AsyncTask<Void, domandabid, Void> {

            @Override
            protected void onPreExecute() {
                // Prima di iniziare a inserire gli elementi svuotiamo l'adapter
                domandabidadapter.clear();
                super.onPreExecute();
            }

            @Override
            protected Void doInBackground(Void... params) {

                // Qui dentro si possono mettere le operazioni che potrebbero
                // rallentare il caricamento della listview, come ad sempio il
                // caricamento da db degli oggetti

                domandabid[] domande = {
                        new domandabid(1, "Ciao come stai", true, true),
                        new domandabid(1, "Ciao come stai", true, true),
                        new domandabid(1, "Ciao come stai", true, true),
                        new domandabid(1, "Ciao come stai", true, true) };

                // riempimento casuale della lista delle persone
                Random r = new Random();

                for (int i = 0; i < 200; i++) {
                    // Pubblichiamo il progresso
                    publishProgress(domande[r.nextInt(domande.length)]);
                }

                return null;
            }

            @Override
            protected void onProgressUpdate(domandabid... values) {
                // Aggiungiamo il progresso pubblicato all'adapter
                domandabidadapter.add(values[0]);
                super.onProgressUpdate(values);
            }

        }
    }

E ho ottenuto questo errore che non capisco...
Codice: [Seleziona]
5-11 01:55:14.403  29347-29347/com.chiodimassimiliano.koalacompiler.app D/AndroidRuntime﹕ Shutting down VM
05-11 01:55:14.407  29347-29347/com.chiodimassimiliano.koalacompiler.app W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x40020660)
05-11 01:55:14.426  29347-29347/com.chiodimassimiliano.koalacompiler.app E/AndroidRuntime﹕ FATAL EXCEPTION: main
    android.content.res.Resources$NotFoundException: String resource ID #0x1
            at android.content.res.Resources.getText(Resources.java:252)
            at android.widget.TextView.setText(TextView.java:3364)
            at com.chiodimassimiliano.koalacompiler.app.domandabidadapter.getView(domandabidadapter.java:50)
            at android.widget.AbsListView.obtainView(AbsListView.java:1469)
            at android.widget.ListView.makeAndAddView(ListView.java:1786)
            at android.widget.ListView.fillDown(ListView.java:705)
            at android.widget.ListView.fillFromTop(ListView.java:762)
            at android.widget.ListView.layoutChildren(ListView.java:1625)
            at android.widget.AbsListView.onLayout(AbsListView.java:1299)
            at android.view.View.layout(View.java:7225)
            at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1285)
            at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1161)
            at android.widget.LinearLayout.onLayout(LinearLayout.java:1078)
            at android.view.View.layout(View.java:7225)
            at android.widget.FrameLayout.onLayout(FrameLayout.java:369)
            at android.view.View.layout(View.java:7225)
            at android.widget.FrameLayout.onLayout(FrameLayout.java:369)
            at android.view.View.layout(View.java:7225)
            at android.view.ViewRoot.performTraversals(ViewRoot.java:1189)
            at android.view.ViewRoot.handleMessage(ViewRoot.java:1914)
            at android.os.Handler.dispatchMessage(Handler.java:130)
            at android.os.Looper.loop(SourceFile:351)
            at android.app.ActivityThread.main(ActivityThread.java:3833)
            at java.lang.reflect.Method.invokeNative(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:538)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:659)
            at dalvik.system.NativeStart.main(Native Method)
Massimiliano.

Offline Aaaaabbbb

  • Utente junior
  • **
  • Post: 55
  • Respect: +3
    • Google+
    • pietmau
    • Mostra profilo
  • Dispositivo Android:
    Nexus 7, Samsung GT-S5830i, LG Optimus, Galaxy Tab 3
  • Play Store ID:
    aaaaaaaaaaaa
  • Sistema operativo:
    Win, Ubuntu
Re:Listbox con RadioGroup
« Risposta #8 il: 11 Maggio 2014, 08:17:56 CEST »
0
Ciao,
Così ad occhi direi che no trova il testo che uno di questi due metodi doverebbe restituire
Codice (Java): [Seleziona]
domande.getDomanda();
domande.getTesto()
e poi mi raccomando sbarazzati dell'holder e del ricilo dello stesso.

Ciao!