Autore Topic: ho problemi nel visualizzare i dati della listview  (Letto 266 volte)

Offline xixietto

ho problemi nel visualizzare i dati della listview
« il: 17 Ottobre 2015, 15:15:14 CEST »
0
salve, questo è il mio codice
Codice (Java): [Seleziona]
public class MainActivity extends AppCompatActivity {
                //Vatiabili 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;

    @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
        listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @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);
                        Aggiornare();
                        //finish();
                        //startActivity(getIntent());
                    }
                });
                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.clear();
                Aggiornare();

            }
        });

    }

    @Override
    protected void onRestart() {
        super.onRestart();
        Aggiornare();

    }

    public void Aggiornare(){
        adapter_MainActivity = new Adapter_MainActivity(this, R.layout.row_principale, listp);
        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);

        }
    }
}

dopo che cancello una riga con
Codice (Java): [Seleziona]
.....
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
.....

nel db viene eliminata la riga ma sulla listview no..
esempio nella listview ho
paolo
luca


se elimino paolo ottengo
luca
luca

come risolvo?