JavascriptProva

mercoledì 30 novembre 2016

Obiettivo: mettere un'AlertDialog

Obiettivo: mettere una casella di dialogo per la cancellazione di un elemento dal database.
Trovato:
        listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
            @Override
            public boolean onItemLongClick(AdapterView parent, View view, int position, long id) {

                //i valori delle textviews della row servono per la finestra di dialogo.
                final TextView txtNome=(TextView)view.findViewById(R.id.txtNome);
                final TextView txtCognome=(TextView)view.findViewById(R.id.txtCognome);

                //codice per la finestra di dialogo
                new AlertDialog.Builder(context)
                        .setMessage("SEI SICURO DI VOLER CANCELLARE "+txtNome.getText()+" "+txtCognome.getText()+"?")
                        .setPositiveButton("SI", new DialogInterface.OnClickListener(){

                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                helper.cancella(txtNome.getText().toString(),txtCognome.getText().toString());
                                Cursor c=helper.queryTotale(editNome.getText().toString(),editCognome.getText().toString());
                                crs=myCursorAdapter.swapCursor(c);

                            }
                        })
                        .setNegativeButton("NO",new DialogInterface.OnClickListener(){

                            @Override
                            public void onClick(DialogInterface dialog, int which) {

                            }
                        })
                        .show();
                //------FINE CODICE per la finestra di dialogo


                return true;


            }
        });
Funziona.
Per il NO ho lasciato vuoto il comando, dal momento che non intendo fare nulla.
Notevole (marcato in rosso) il fatto che ottengo un messaggio di errore che chiama in causa il Theme usato, se non imposto il context coerentemente con quello dell'Activity.
Per far questo ho aggiunto all'inizio:
public class MainActivity extends AppCompatActivity {
    Context context;
    Cursor crs;
    EditText editCognome;
    EditText editNome;
    MyCursorAdapter myCursorAdapter;
    ListView listView;
    Helper helper;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        context=this;
impostando poi a context il contesto della AlertDialog.Builder.
E così funziona.

Nessun commento:

Posta un commento