Autore Topic: aggiornare al click di un bottone  (Letto 290 volte)

Offline xixietto

aggiornare al click di un bottone
« il: 16 Ottobre 2015, 23:49:04 CEST »
0
ho creato una listview con due textview caricate da dB sqlite
il problema è che al click prolungato su una riga della listview...(dovrebbe cancellarmi la riga)
il db si aggiorna ma la listview no..
sapete aiutarmi?
Codice (Java): [Seleziona]
public class MainActivity extends AppCompatActivity {
                //Variabili Globali
    DbHelper helper =new DbHelper(this);
    SQLiteDatabase db;
    ListView listView;
    Intent intent; // x passare i dati tra activity

    Map<Integer, myCustomObject> listp = new TreeMap<>();
    Adapter_MainActivity adapter_MainActivity = new Adapter_MainActivity(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
        listView = (ListView) findViewById(R.id.listView);
        listView.setFastScrollEnabled(true);

        //metodo (visualizza tutti i contatori presenti in tabella contatore)
        Aggiornare();

        //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
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> arg0, View v, int position, long arg3) {
                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

                                                 }}});

        //click lungo listView(inserisci in nome il valore dell item cliccato.. tramite una query si ottiene l'id..e chiede se cancellare quel nome dalle tabelle
        [b]listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {[/b]
            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
                TextView lblListHeader = (TextView) view.findViewById(R.id.textViewList);
                final String nome = lblListHeader.getText().toString();
                final AlertDialog.Builder adb = new AlertDialog.Builder(MainActivity.this);
                adb.setTitle("Elimina:");
                adb.setMessage("Sei sicuro di voler eliminare " + (nome) + " ?");
                adb.setNegativeButton("Annulla", null);
                adb.setPositiveButton("Ok", new AlertDialog.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        String[] selectionArg = {nome};
                        Cursor g = db.rawQuery("SELECT _id FROM contatore WHERE titolo = ?", selectionArg);
                        while (g.moveToNext()) {
                            String id = g.getString(0);//id
                            String table_name2 = "promemoria ";
                            String where2 = "idcont=?";
                            String[] whereArgs2 = {id};//id contatore premuto
                            db.delete(table_name2, where2, whereArgs2);
                        }
                        String table_name = "contatore ";
                        String where = "titolo=?";
                        String[] whereArgs = {nome};
                        db.delete(table_name, where, whereArgs);
                    }
                });
                adb.show();
                return true;

            }//chiusura onItemLongClick
        }); //chiusura setOnItemLongClickListener



        //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();
                adapter_MainActivity.notifyDataSetChanged();

            }
        });

    }


    @Override
    protected void onRestart() {
        super.onRestart();  // Always call the superclass method first
Aggiornare();
        // Activity being restarted from stopped state
    }

    [b]public void Aggiornare(){
        Cursor c = db.rawQuery("SELECT * FROM contatore",null);
        c.moveToFirst();
        if(c.getCount()==0){
                    }
        else {
            for (int i = 0; i < c.getCount(); i++) {
            Cursor a = db.rawQuery("SELECT numero FROM promemoria WHERE idcont=?  ORDER BY _id DESC LIMIT 1", new String[]{c.getString(0)});
            while (a.moveToNext()) {
                listp.put(i, new myCustomObject(c.getString(1), a.getInt(0)));
                c.moveToNext();
            }
            }
            adapter_MainActivity.clear();
            adapter_MainActivity.notifyDataSetChanged();
            adapter_MainActivity.add(listp);
            adapter_MainActivity.notifyDataSetChanged();
            listView.setAdapter(adapter_MainActivity);

        }
    }
}[/b]
ho provato sia con onRestart() che con adapter_MainActivity.notifyDataSetChanged();

spero di essere stato chiaro