Autore Topic: RecyclerView e gestione dei dati  (Letto 541 volte)

Offline xixietto

RecyclerView e gestione dei dati
« il: 15 Ottobre 2015, 16:53:08 CEST »
0
Salve, ho sostituito una listview con una recyclerView.
il mio stato attuale..
le righe della recyclerView hanno due textview e due bottoni
sono riuscito a caricare tramite una query sqlite solo una textView..
ora come carico anche la seconda textview senza eliminare i dati della prima textView?
il problema sorge perchè dovrei utilizzare più query.. essendo che i risultati provengono da due tabelle differenti
come gestisco il click sulle varie view?

activity main
Codice (Java): [Seleziona]
<RelativeLayout 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"
    xmlns:Android="http://schemas.android.com/apk/res-auto"
    tools:context=".MainActivity"
    android:background="@color/sfondo">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/colorPrimary"
        android:minHeight="?attr/actionBarSize"
        app:theme="@style/ThemeOverlay.AppCompat.ActionBar"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

    <android.support.v7.widget.RecyclerView
        android:id="@+id/recyclerView"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:layout_below="@+id/toolbar"
        android:layout_above="@+id/fab">
    </android.support.v7.widget.RecyclerView>

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="90dp"
        android:layout_height="90dp"
        android:layout_gravity="bottom|end"
        android:src="@mipmap/fab_ic_add"
        android:layout_marginLeft="@dimen/fab_margin"
        android:layout_marginRight="@dimen/fab_margin"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true" />

</RelativeLayout>
righe
Codice (Java): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="horizontal"
    android:padding="10dp"
    android:id="@+id/relative">
    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        app:backgroundTint="@color/piu"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:src="@mipmap/add"
        android:padding="5dp"
        android:layout_alignTop="@+id/meno"
        android:layout_alignParentStart="true" />

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/meno"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:src="@mipmap/meno"
        app:backgroundTint="@color/meno"
        android:padding="5dp"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true" />

    <TextView
        android:id="@+id/textViewList"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="25sp"
        android:textColor="@color/bianco"
        android:textStyle="normal"
        android:singleLine="true"
        android:text="centrato"
        android:layout_alignTop="@+id/fab"
        android:layout_centerHorizontal="true" />

    <TextView
        android:id="@+id/numero"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="15sp"
        android:textStyle="normal"
        android:singleLine="true"
        android:text="numero"
        android:textColor="#fedf00"
        android:layout_alignBottom="@+id/fab"
        android:layout_centerHorizontal="true" />

</RelativeLayout>
Row
Codice (Java): [Seleziona]
public class Row_principale {
    private String titolo;
    private String numero;

    public String getTitolo() {
        return titolo;
    }

    public void setTitolo(String titolo) {
        this.titolo = titolo;
    }

    public String getNumero() {
        return numero;
    }

    public void setNumero(String numero) {
        this.numero = numero;
    }

}
row_view_holder
Codice (Java): [Seleziona]
package com.fabrizio_project.contatore;

import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.TextView;

public class Row_view_holder_principale extends RecyclerView.ViewHolder {

        TextView titolo;
        TextView numero;

        public Row_view_holder_principale(View view) {
            super(view);
            this.titolo = (TextView) view.findViewById(R.id.textViewList);
            this.numero = (TextView) view.findViewById(R.id.numero);
        }
    }

adapter
Codice (Java): [Seleziona]
import java.util.ArrayList;

public class Adapter_principale extends RecyclerView.Adapter<Row_view_holder_principale> {
    Context context;
    ArrayList<Row_principale>itemsList;
 

    public Adapter_principale(Context context, ArrayList<Row_principale> itemsList) {
        this.context = context;
        this.itemsList = itemsList;
    }

    @Override
    public int getItemCount() {
        if (itemsList == null) {
            return 0;
        } else {
            return itemsList.size();
        }
    }

    @Override
    public Row_view_holder_principale onCreateViewHolder(ViewGroup viewGroup, int position) {
        LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext());
        View v = inflater.inflate(R.layout.row_principale, null);
        Row_view_holder_principale viewHolder = new Row_view_holder_principale(v);

       
        return viewHolder;
    }

    @Override
    public void onBindViewHolder(Row_view_holder_principale row_view_holder, int position) {
        Row_principale items = itemsList.get(position);
        row_view_holder.titolo.setText(String.valueOf(items.getTitolo()));
        row_view_holder.numero.setText(String.valueOf(items.getNumero()));
           }



}

main activity
Codice (Java): [Seleziona]
public class MainActivity extends AppCompatActivity {
                //Vatiabili Globali
    DbHelper helper =new DbHelper(this);
    SQLiteDatabase db;

    RecyclerView recyclerView;
    ArrayList<Row_principale> itemsList = new ArrayList<>();
    Adapter_principale adapter;
    TextView textView;
    Intent intent; // x passare i dati tra activity

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
                    //variabili
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        //  getSupportActionBar().setTitle(R.string.app_name);     //Titolo In Toolbar
        db= helper.getReadableDatabase();//sola lettura x fare query

        recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        adapter = new Adapter_principale(MainActivity.this, getTitolo());
        recyclerView.setAdapter(adapter);
        textView = (TextView) findViewById(R.id.textViewList);




        //entra in Activity Add
        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                intent = new Intent(getApplicationContext(), Add.class)
                        .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(intent);  //Snackbar.make(view, "Contatore aggiunto con successo!", Snackbar.LENGTH_LONG) .setAction("Action", null).show();
            }
        });

    }

    public ArrayList<Row_principale> getTitolo()
    {

        ArrayList<Row_principale> it = new ArrayList<Row_principale>();
        final SQLiteDatabase db = helper.getReadableDatabase();//sola lettura x fare query
        Cursor r = db.rawQuery("SELECT titolo FROM contatore",null);
        r.moveToFirst();
        for (int i = 0; i < r.getCount(); i++) {
            Row_principale items1 = new Row_principale();
            // (r.getString(1));//numero
            //(r.getString(2));//data
            items1.setTitolo(r.getString(0));
            it.add(items1);
            r.moveToNext();
        }
        return it;

    }
}
« Ultima modifica: 15 Ottobre 2015, 16:59:40 CEST da xixietto »

Offline NetGEL

  • Utente normale
  • ***
  • Post: 196
  • Respect: +9
    • Google+
    • Mostra profilo
  • Play Store ID:
    NetGEL
Re:RecyclerView e gestione dei dati
« Risposta #1 il: 15 Ottobre 2015, 16:57:23 CEST »
0
Devi inserire nel tuo adapter questo:

@Override
    public Row_view_holder_principale onCreateViewHolder(ViewGroup viewGroup, int position) {
        LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext());
        View view = inflater.inflate(R.layout.row_principale, null);
        Row_view_holder_principale viewHolder = new Row_view_holder_principale(view);


        //qui
        TextView textView = (TextView)view.findViewById(R.id.textViewList);
        textView.setOnClickListener.......

        return viewHolder;
    }

per entrambe le textView su cui vuoi cliccare
« Ultima modifica: 15 Ottobre 2015, 17:00:41 CEST da NetGEL »

Offline xixietto

Re:RecyclerView e gestione dei dati
« Risposta #2 il: 15 Ottobre 2015, 17:01:32 CEST »
0
ho provato ad inserire il codice da te fornito ma ho problemi con il database..
posto il codice
Codice (Java): [Seleziona]
..... @Override
    public Row_view_holder_principale onCreateViewHolder(ViewGroup viewGroup, int position) {
        LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext());
        View v = inflater.inflate(R.layout.row_principale, null);
        Row_view_holder_principale viewHolder = new Row_view_holder_principale(v);

        TextView textView = (TextView)v.findViewById(R.id.textViewList);
        //click listView(inserisci in nome il valore dell item cliccato.. tramite una query si ottiene l'id.. passo i dati(id e nome) in contatore
        textView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                v.setBackgroundColor(0x8BC7DB); //colore item
                TextView lblListHeader = (TextView) v.findViewById(R.id.textViewList);
                String nome = lblListHeader.getText().toString();
                String[] selectionArg = {nome};
                Cursor g = db.rawQuery("SELECT _id FROM contatore WHERE titolo = ?", selectionArg);
                while (g.moveToNext()) {
                    //dati da passare (nome e id della riga premuta) a Contatore
                    String id = g.getString(0);//id
                    intent = new Intent(getApplicationContext(), Contatore.class);
                    String Salsiccia = getPackageName();
                    intent.putExtra(Salsiccia + ".myString", nome);      //inseriamo i dati nell'intent
                    intent.putExtra(Salsiccia + ".myInt", id);
                    startActivity(intent); //facciamo partire la seconda activity
                }
            }
        });

Offline NetGEL

  • Utente normale
  • ***
  • Post: 196
  • Respect: +9
    • Google+
    • Mostra profilo
  • Play Store ID:
    NetGEL
Re:RecyclerView e gestione dei dati
« Risposta #3 il: 15 Ottobre 2015, 17:07:01 CEST »
0
a mio parere a livello di architettura software dovresti farti una classe che gestisce il database col al suo interno i metodi che leggono (select), modificano (update), inseriscono(insert) e cancellano (delete) da database e poi richiamare i metodi che ti servono ad esempio sulla onClick altrimenti rischi di fare confusione come in questo caso e mettere la startActivity dentro un ciclo while

Offline xixietto

Re:RecyclerView e gestione dei dati
« Risposta #4 il: 15 Ottobre 2015, 17:09:00 CEST »
0
sapresti postarmi un pezzo di codice dove spieghi esplicitamenti cm fare..
Codice (Java): [Seleziona]
public class DbHelper extends SQLiteOpenHelper {

    public DbHelper(Context context) //(Riferimento nostra activity, Nome db, SQLiteDatabase.CursorFactory factory, int version)
    {
        super(context, "Gestione", null, 2);    }



    //onCreate () - viene chiamato dal framework, se il database è accessibile ma non ancora creato.
    @Override
    public void onCreate(SQLiteDatabase db) {
        String query = "CREATE TABLE contatore" +
                "(" +
                "_id INTEGER PRIMARY KEY autoincrement," +
                "titolo text not null" +
                ")";
        String query2 = "CREATE TABLE promemoria" +
                "(" +
                "_id INTEGER PRIMARY KEY autoincrement," +
                "numero INTEGER not null,"+
                "data text not null," +
                "valore_incremento INTEGER not null," +
                "incremento_decremento text null," +
                "idcont INTEGER not null,"+
                "FOREIGN KEY (idcont) REFERENCES contatore(_id)"+
                ")";


        db.execSQL(query); //comando per eseguire query
        db.execSQL(query2); //comando per eseguire query


        inizializzazione(db);
    }

    private void inizializzazione(SQLiteDatabase db) {
/*
        ContentValues values = new ContentValues();
        values.put("titolo","Libri scritti");
        db.insert("contatore", null, values); //inserimento nella tabella

        ContentValues values2 = new ContentValues();
        values2.put("numero", 5);
        values2.put("data","mar,13/10/2015 11:00 PM");
        values2.put("valore_incremento",1);
        values2.put("incremento_decremento","+");
        values2.put("idcont", 1);
        db.insert("promemoria", null, values2); //inserimento nella tabella

        ContentValues values3 = new ContentValues();
        values3.put("numero", 6);
        values3.put("data","mer,14/10/2015 9:00 PM");
        values3.put("valore_incremento",1);
        values3.put("incremento_decremento","+");
        values3.put("idcont", 1);
        db.insert("promemoria", null, values3); //inserimento nella tabella
*/

    }

    //  ONUPGRADE ()  chiamato, se la versione del database è aumentato nel codice dell'applicazione. Questo metodo consente di aggiornare uno schema di database esistente o di cadere il database esistente e ricrearlo attraverso il onCreate () metodo.
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS contatore");
        db.execSQL("DROP TABLE IF EXISTS promemoria");


        onCreate(db);
    }

}

Offline NetGEL

  • Utente normale
  • ***
  • Post: 196
  • Respect: +9
    • Google+
    • Mostra profilo
  • Play Store ID:
    NetGEL
Re:RecyclerView e gestione dei dati
« Risposta #5 il: 15 Ottobre 2015, 17:34:49 CEST »
0
i metodi che accedono al database li metti tutti nella tua classe DbHelper

public ArrayList<String> getAllValues() throws Exception {
        try {
            ArrayList<String>  allString = new ArrayList<>();

            String selectQuery = "SELECT * FROM " + your_table;

            SQLiteDatabase db = this.getWritableDatabase();
            Cursor cursor = db.rawQuery(selectQuery, null);

            if (cursor.moveToFirst()) {
                do {
                   
                    .....

                } while (cursor.moveToNext());
            }
            cursor.close();
            db.close();

            return allString;
        }
        catch (Exception ex) {       
            throw (ex);
        }
    }


una cosa del genere e poi richiami questa funzione dove ti serve

Offline xixietto

Re:RecyclerView e gestione dei dati
« Risposta #6 il: 15 Ottobre 2015, 18:00:50 CEST »
0
ma in caso non volessi modificare il mio db in questo modo... come ottengo il click riguardo la textview?

Offline tonno16

  • Utente storico
  • *****
  • Post: 1169
  • Respect: +56
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:RecyclerView e gestione dei dati
« Risposta #7 il: 15 Ottobre 2015, 19:48:28 CEST »
0
Io ho dovuto settare un clickListeber sulle singole view del layout della riga. Le recicleview fanno un sacco di cose fighe ma vedo che la gestione del click non è così immediata come la listview

Offline xixietto

Re:RecyclerView e gestione dei dati
« Risposta #8 il: 15 Ottobre 2015, 19:50:14 CEST »
0
 :-o ........ e ora?
mi consigli di tornare sulle listview?
nel caso.. come si imposta la listview per farle contenere due floating con due textview?
« Ultima modifica: 15 Ottobre 2015, 19:54:00 CEST da xixietto »

Offline tonno16

  • Utente storico
  • *****
  • Post: 1169
  • Respect: +56
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:RecyclerView e gestione dei dati
« Risposta #9 il: 15 Ottobre 2015, 20:11:03 CEST »
0
Non ti sto dicendo di tornare. Ho solo detto che una listview è più semplice ;)
Premetto che sono da cell....il problema non è il floating. Quel pulsante tondo è una view di per se. Quindi è solo un problema di xnl e di come disponi i componenti al suo interno. Guarda la oreview del tuo file xml. Quando si vede tutto correttamente allora sei a posto.

Offline xixietto

Re:RecyclerView e gestione dei dati
« Risposta #10 il: 15 Ottobre 2015, 20:15:21 CEST »
0
si vede tutto correttamente per fortuna  ;-)
quello che mi preoccupa è come caricare la seconda textview essendo che bisogna caricare prima la prima.. tramite una query..
per ottere l'id..e poi fare un'altra query che ha bisogno dell'id della prima query per stamparmi infine i risultati nella seconda extview
 ho due textview e due FloatingActionButton
ora ho dei problemi..

1)la seconda textView deve essere caricata tramite un'altra query che prende però gli id delle righe inserite tramite la query che carica la prima textview
2)risolto il punto uno come gestisco il click sulle apposite FloatingActionButton e tetxview?
posto il mio codice..

Offline tonno16

  • Utente storico
  • *****
  • Post: 1169
  • Respect: +56
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:RecyclerView e gestione dei dati
« Risposta #11 il: 15 Ottobre 2015, 20:18:04 CEST »
0
O io non ho capito niente e mi scuso....
Oppure hai un grave problema concettuale. Mi sembra stranissimo che devi mettere mano all' id della prima texview.


Offline xixietto

Re:RecyclerView e gestione dei dati
« Risposta #12 il: 15 Ottobre 2015, 20:24:29 CEST »
0
questa è la prima query
Codice (Java): [Seleziona]
 Cursor r = db.rawQuery("SELECT * FROM contatore",null);(r.getString(0));   è l'id che m serve
 items1.setTitolo(r.getString(1)); //quello che deve esserci nella textview1
mi stampa i risultati nella textview1

seconda query
Codice (Java): [Seleziona]
final Cursor r = db.rawQuery("SELECT numero FROM promemoria WHERE idcont=? ", new String[]{(r.getString(0))}carica seconda textview
e stampare i dati
ecco cosa voglio dire.



Post unito: 16 Ottobre 2015, 16:00:26 CEST
ho provato a modificare il codice in questo modo
Codice (Java): [Seleziona]
public class MainActivity extends AppCompatActivity {
                //Vatiabili Globali

    DbHelper helper =new DbHelper(this);
    SQLiteDatabase db;
    RecyclerView recyclerView;
    Intent intent; // x passare i dati tra activity
    Map<Integer, myCustomObject> listp = new TreeMap<>();
    Adapter_principale adapter_principale = new Adapter_principale(this, R.layout.row_principale, listp);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
                    //variabili
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        //  getSupportActionBar().setTitle(R.string.app_name);     //Titolo In Toolbar
        db= helper.getReadableDatabase();//sola lettura x fare query

        recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));

        final Map<Integer, myCustomObject> listp = new TreeMap<>();
        final Adapter_principale adapter_principale = new Adapter_principale(this, R.layout.row_principale, listp);

        //nome ingrediente per salsiccia
        int i=0;
            Cursor r = db.rawQuery("SELECT * FROM contatore",null);
        while(r.moveToNext()) {
            r.moveToNext();
            i++;
            listp.put(i, new myCustomObject(r.getString(1), i));
        }
        int j=0;
        Cursor a = db.rawQuery("SELECT * FROM promemoria WHERE idcont=?", new String[]{r.getString(0)});
        while (a.moveToNext()) {
            j++;
            if(listp.containsKey(j))
                listp.get(j).setText2(a.getInt(1));
            //  listp.put(2, new myCustomObject( null,a.getInt(0) * ValoreIntero));

        }
        adapter_principale.clear();
        adapter_principale.notifyDataSetChanged();
        adapter_principale.add(listp);

        recyclerView.setAdapter(adapter_principale);



        //entra in Activity Add
        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                intent = new Intent(getApplicationContext(), Add.class)
                        .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(intent);  //Snackbar.make(view, "Contatore aggiunto con successo!", Snackbar.LENGTH_LONG) .setAction("Action", null).show();
            }
        });

    }

}

Codice (Java): [Seleziona]
class myCustomObject {
    private String text1;
    private int text2;

    public String getText1(){

        return this.text1;
    }
    public void setText1(String text1){

        this.text1= text1;
    }

    public int getText2(){
        return this.text2;
    }
    public void setText2(int text2){
        this.text2= text2;
    }

    public myCustomObject(String text1, int text2) {
        this.text1 = text1;
        this.text2 = text2;
    }


}

public class Adapter_principale extends BaseAdapter {
    private ArrayList mapData;
    Context context;
    int layoutResourceId;

    Holder holder;

    public Adapter_principale(Context context, int layoutResourceId, Map<Integer, myCustomObject> arList) {
        this.layoutResourceId = layoutResourceId;
        this.context = context;

        mapData = new ArrayList();
        mapData.addAll(arList.entrySet());
    }

    @Override
    public int getCount() {
        return mapData.size();
    }


    @Override
    public Map.Entry<Integer, myCustomObject> getItem(int position) {
        return (Map.Entry) mapData.get(position);
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View view, ViewGroup parent) {
        if(view == null) {
            holder = new Holder();

            LayoutInflater inflater = ((Activity)context).getLayoutInflater();
            view = inflater.inflate(layoutResourceId, parent, false);

            holder.textView = (TextView)view.findViewById(R.id.textViewList);
            holder.textView2 = (TextView)view.findViewById(R.id.numero);

            view.setTag(holder);
        } else {
            holder = (Holder)view.getTag();
        }

        Map.Entry<Integer, myCustomObject> item = getItem(position);
        holder.textView.setText(item.getValue().getText1());
        holder.textView2.setText(String.valueOf(item.getValue().getText2()));

        return view;
    }
    public void add(Map<Integer, myCustomObject> map) {
        mapData.addAll(map.entrySet());
    }
    public void clear() {
        mapData.clear();
    }

}
class Holder {
    TextView textView, textView2;
}

ma ottengo errore su questa riga nel main recyclerView.setAdapter(adapter_principale);"   
Codice (Java): [Seleziona]
Error:(75, 21) error: method setAdapter in class RecyclerView cannot be applied to given types;
required: Adapter
found: Adapter_principale
reason: actual argument Adapter_principale cannot be converted to Adapter by method invocation conversion


sapete come gestire l'errore?
« Ultima modifica: 16 Ottobre 2015, 16:00:26 CEST da xixietto, Reason: Merged DoublePost »

Offline xixietto

Re:RecyclerView e gestione dei dati
« Risposta #13 il: 17 Ottobre 2015, 16:38:15 CEST »
0
sono riuscito a risolvere la visualizzazione della seconda textview
ora come imposto i FloatingActionButton a eseguire un comando?

class myCustomObject {
    private String text1;
    private int text2;

    public String getText1(){

        return this.text1;
    }
    public void setText1(String text1){        this.text1= text1;
    }

    public int getText2(){
        return this.text2;
    }
    public void setText2(int text2){
        this.text2= text2;
    }

    public myCustomObject(String text1, int text2) {
        this.text1 = text1;
        this.text2 = text2;
    }


}




public class Adapter_MainActivity extends BaseAdapter {
    private ArrayList mapData;
    Context context;
    int layoutResourceId;

    Holder holder;

    public Adapter_MainActivity(Context context, int layoutResourceId, Map<Integer, myCustomObject> arList) {
        this.layoutResourceId = layoutResourceId;
        this.context = context;

        mapData = new ArrayList();
        mapData.addAll(arList.entrySet());
    }

    @Override
    public int getCount() {
        return mapData.size();
    }


    @Override
    public Map.Entry<Integer, myCustomObject> getItem(int position) {
        return (Map.Entry) mapData.get(position);
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View view, ViewGroup parent) {
        if(view == null) {
            holder = new Holder();

            LayoutInflater inflater = ((Activity)context).getLayoutInflater();
            view = inflater.inflate(layoutResourceId, parent, false);

            holder.textView = (TextView)view.findViewById(R.id.textViewList);
            holder.textView2 = (TextView)view.findViewById(R.id.numero);

            FloatingActionButton fab = (FloatingActionButton) view.findViewById(R.id.fab);
            fab.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Toast.makeText(context, "+", Toast.LENGTH_SHORT).show();

//dovrebbe avere al suo interno questo
//vibratore
        Vibrator vibe = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
        vibe.vibrate(50);

        String Valore = numero.getText().toString();
        int numer = Integer.parseInt(Valore);

        //valore incremento
        String Valore_in = valore_incre.getText().toString();
        int valore_in = Integer.parseInt(Valore_in);

        int tot = numer + valore_in;

        Log.d("valore edit", String.valueOf((tot)));
        numero.setText(String.valueOf((tot)));

        //data
        long date = System.currentTimeMillis();
        SimpleDateFormat sdf = new SimpleDateFormat("E, dd/MM/yyyy h:mm a");
        String dateString = sdf.format(date);

        ContentValues values = new ContentValues();
        values.put("numero", tot);
        values.put("data", String.valueOf(dateString));
        values.put("valore_incremento", valore_in);
        values.put("incremento_decremento", "+");
        values.put("idcont", _id);
        db.insert("promemoria", null, values); //inserimento nella tabella

//fine
    }
             
         
            });



           
                    }}


            });
            view.setTag(holder);
        } else {
            holder = (Holder)view.getTag();
        }

        Map.Entry<Integer, myCustomObject> item = getItem(position);
        holder.textView.setText(item.getValue().getText1());
        holder.textView2.setText(String.valueOf(item.getValue().getText2()));

        return view;
    }
    public void add(Map<Integer, myCustomObject> map) {
        mapData.addAll(map.entrySet());
    }
    public void clear() {
        mapData.clear();
    }

}
class Holder {
    TextView textView, textView2;
}

il FloatingActionButton dovrebbe interagire con il db.. sapete come fare?