JavascriptProva

lunedì 19 dicembre 2016

Lettura di un database tramite i fragments

Per il momento creo un database o verifico se un database sia già stato creato.
Un database c'è, ed è presente su storage anziché sulla cartella inaccessibile. Credo che questa sia una soluzione più conveniente, anche se espone il database a un maggior rischio, per la possibilità di trasferirlo facilmente mediante un semplice meccanismo di copia-incolla anche su dispositivi non rootati.

Ripristino il codice per aggiungere voci al database.
public class MainActivity extends AppCompatActivity implements Frammento.OnFragmentInteractionListener{

    Helper helper;

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        helper=new Helper(this);
        
        helper.save("Mario");
        helper.save("Pippo");
        helper.save("Mimmo");

,,,,,
Ora mi occupo di caricare un fragment.
Per prima cosa ho creato il codice del fragment, con tanto di creazione dell'interfaccia per inviare messaggi all'activity:
public class Frammento3 extends Fragment {

    OnFragmentInteractionListener mListener;

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

    @Override
    public void onAttach(Context context){
        super.onAttach(context);
        if(context instanceof OnFragmentInteractionListener){
            mListener=(OnFragmentInteractionListener)context;
        }
    }
}
Quindi ho creato il codice dell'activity principale:
public class MainActivity extends AppCompatActivity implements Frammento.OnFragmentInteractionListener{

    Helper helper;
    Frammento myFrag;
    FragmentManager fragmentManager=getSupportFragmentManager();
    FragmentTransaction transaction=fragmentManager.beginTransaction();

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        helper=new Helper(this);

        /*helper.save("Mario");
        helper.save("Pippo");
        helper.save("Mimmo");*/

        myFrag=new Frammento();
        transaction.add(R.id.display,myFrag,"frammento");
        transaction.commit();



    }

    @Override
    public void onFragmentInteraction() {

    }
}
(ho oscurato i comandi che avevo usato in precedenza per la scrittura del database).

Ottengo il caricamento del frammento.

Ora devo fare in modo che il fragment legga il database disponendo i dati che vi trova in qualche view...

Fatto.
Viene creata una TextView per ogni record appartenente al recordset.
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
        View v=(View)inflater.inflate(R.layout.frammento,container,false);
        LinearLayout layout=(LinearLayout)v.findViewById(R.id.frammento);
        helper=new Helper(v.getContext());
        Cursor c=helper.query();
        do{
            testo=new TextView(v.getContext());
            testo.setText(c.getString(c.getColumnIndex("nome")));
            layout.addView(testo);
        }while(c.moveToNext());
        return v;
    }
E funziona.

Nessun commento:

Posta un commento