CERCA
PER MODELLO
FullScreen Chatbox! :)

Utente del giorno: Varioflex con ben 2 Thanks ricevuti nelle ultime 24 ore
Utente della settimana: 9mm con ben 14 Thanks ricevuti negli ultimi sette giorni
Utente del mese: 9mm con ben 35 Thanks ricevuti nell'ultimo mese

Visualizzazione dei risultati da 1 a 1 su 1
Discussione:

delete DB

Se questa discussione ti è stata utile, ti preghiamo di lasciare un messaggio di feedback in modo che possa essere preziosa in futuro anche per altri utenti come te!
  1. #1
    Baby Droid


    Registrato dal
    May 2014
    Messaggi
    48

    Ringraziamenti
    9
    Ringraziato 0 volte in 0 Posts
    Predefinito

    delete DB

    Ciao sono bloccato su un comando lanciato da un context menu, che dovrebbe cancellare la riga nel database e ricaricare le righe in list view.

    questa e' la classe con il context menu comando delete(accorciata che non entrava)

    codice:
         @Override
        public void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            if (requestCode == 123) {
                String string = data.getExtras().getString(getActivity().getPackageName());
                Log.d("FragmentAsList", "stringa dall altra activity: " + string);
                Toast.makeText(getActivity(), string, Toast.LENGTH_LONG).show();
                ///database insert
                today.setToNow();
                String timeCurrent = today.format("%Y-%m-%d %H:%M:%S");
                myDb.insertRow(string, timeCurrent, null, null);
                //database query
                Cursor cursor = myDb.getallRows();
                String[] fromFieldNames = new String[]{Db.ROW_TASK};
                int[] toViewId = new int[]{R.id.text_row};
    
    
                SimpleCursorAdapter myCursorAdapter;
                myCursorAdapter = new SimpleCursorAdapter(getActivity(), R.layout.textview_pretty_cool, cursor, fromFieldNames, toViewId, 0);
                listView.setAdapter(myCursorAdapter);
    
    
    
            }
        }
    
         @Override
        public View onCreateView(LayoutInflater inflater,  @nullable ViewGroup container,  @nullable Bundle savedInstanceState) {
    
    
    
            View hiddenList = inflater.inflate(R.layout.fragment_as_list, container, false);
    
            
            //We are inside a fragment, we have to speak with the compiler !
            registerForContextMenu(listView);
            Cursor cursor = myDb.getallRows();
            String[] fromFieldNames = new String[]{Db.ROW_TASK};
            int[] toViewId = new int[]{R.id.text_row};
    
    
            SimpleCursorAdapter myCursorAdapter;
            myCursorAdapter = new SimpleCursorAdapter(getActivity(), R.layout.textview_pretty_cool, cursor, fromFieldNames, toViewId, 0);
            listView.setAdapter(myCursorAdapter);
            listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                 @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    Log.d("ivano.android.com.ucanote.FragmentAsList", "onItemClick (line 115): tocca posizione: " + position);
                    //TODO make a new activity where you have a causal motivational thing etc
    
    //        Intent explicitIntent =new Intent(getActivity(),DetailNote.class);
    //        startActivity(explicitIntent);
                }
    
            });
    
    
            return hiddenList;
    
    
    
    
    
    
    
        }
         @Override
        public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
    
            super.onCreateContextMenu(menu, v, menuInfo);
    
            MenuInflater mi = getActivity().getMenuInflater();
    
    
            mi.inflate(R.menu.context_menu, menu);
        }
    
         @Override
        public boolean onContextItemSelected(MenuItem item) {
    
            Log.d("ivano.android.com.ucanote.FragmentAsList", "onContextItemSelected (line 148): toccato");
            switch (item.getItemId()) {
                case R.id.delete:
                    //TODO delete
                    registerForContextMenu(listView);
                    AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
                    long index = info.position;
                    Log.d("ivano.android.com.ucanote.FragmentAsList", "onContextItemSelected (line 160): the position is " + index);
                    //TODO first content provider
    
                    myDb.deleteRow(index);
    
                    Cursor cursor = myDb.getallRows();
                    String[] fromFieldNames = new String[]{Db.ROW_TASK};
                    int[] toViewId = new int[]{R.id.text_row};
    
    
                    SimpleCursorAdapter myCursorAdapter;
                    myCursorAdapter = new SimpleCursorAdapter(getActivity(), R.layout.textview_pretty_cool, cursor, fromFieldNames, toViewId, 0);
                    listView.setAdapter(myCursorAdapter);
    
    
    
                    break;
                case R.id.edit:
                    break;
                case R.id.share:
                    break;
    
            }
    
            return super.onContextItemSelected(item);
        }
    
    }
    e questo il database su cui viene eseguito il comando delete row e dopo getallrows

    codice:
    package ivano.android.com.ucanote.ivano.android.com.ucanote.db;
    
    import android.content.ContentValues;
    import android.content.Context;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    import android.util.Log;
    
    /**
     * Created by ivano on 4/8/2015.
     */
    public class Db {
        private static final String TAG="Db";
    //TODO check if all the fields are used,
    // expecially TAG, ALL KEYS and columns, and what is the function of DB info?
    
        //fields
        public static final String ROW_ID = "_id";
        public static final String ROW_TASK = "task";
        public static final String ROW_DATE = "date";
        public static final String ROW_URGENCY = "urgency";
        public static final String ROW_TAG= "tag";
    
        public static final String[] ALL_ROWS=new String[]{ROW_ID,ROW_TASK,ROW_DATE,ROW_URGENCY,ROW_TAG};
    
        //Columns
        public static final int COL_ID = 0;
        public static final int COL_TASK = 1;
        public static final int COL_DATE = 2;
        public static final int COL_URGENCy = 3;
        public static final int COL_TAG=4;
    
        //DB info
        public static final String DATABASE_NAME = "db";
        public static final String DATABASE_TABLE="table1";
    
        //always remember to change this if I are going to update the DB!
        public static final int    DATABASE_VERSION=1;
    
        //create
    
        private static final String DATABASE_CREATE_SQL=
                "CREATE TABLE " + DATABASE_TABLE
                + " ("  + ROW_ID+ " INTEGER PRIMARY KEY AUTOINCREMENT, "
                +ROW_TASK+ " TEXT NOT NULL, "
                +ROW_DATE+ " TEXT, "
                +ROW_URGENCY+" TEXT, "
                +ROW_TAG+" TEXT " +
                        " );";
    
    
    private final Context context;
        private DatabaseHelper myDBHelper;
        private SQLiteDatabase db;
    
    public Db (Context ctx) {
        this.context = ctx;
        myDBHelper=new DatabaseHelper(context);
        }
    
        public Db open() {
        db= myDBHelper.getWritableDatabase();
            return this;
        }
    
        public void close(){
            myDBHelper.close();
        }
    
        public long insertRow (String task,String date, String urgency, String tag) {
            ContentValues initialValues = new ContentValues();
            initialValues.put(ROW_TASK, task);
            initialValues.put(ROW_DATE, date);
            initialValues.put(ROW_URGENCY, urgency);
            initialValues.put(ROW_TAG, tag);
    
        return db.insert(DATABASE_TABLE,null,initialValues);
        }
            //delete a row from the db by _id
            public boolean deleteRow(long rowId) {
                String where =ROW_ID+"="+ rowId;
    
                return db.delete(DATABASE_TABLE,where,null) != 0;
    
    
    }
        public void deleteAll(){
            Cursor c=getallRows();
            long rowId=c.getColumnIndex(ROW_ID);
            if (c.moveToFirst()) {
                do {
                    deleteRow(c.getLong((int) rowId));
    
                }
                while (c.moveToNext());
            }
                c.close();
    
        }
        public Cursor getallRows(){
            String where=null;
            Cursor c=db.query(true,DATABASE_TABLE,ALL_ROWS,where,null,null,null,null,null);
       if (c!= null){
    c.moveToFirst();
        }
          return c;
    
    
        }
    public Cursor getRow(long rowId){
        String where =ROW_ID+"=" +rowId;
        Cursor c=db.query(true,DATABASE_TABLE,ALL_ROWS,where,null,null,null,null,null);
        if(c!= null){
            c.moveToFirst();
        }
        return c;
    
    }
        public boolean updateRow(long rowId,String task,String date, String urgency,String tag){
            String where =ROW_ID+"="+rowId;
            ContentValues newValues =new ContentValues();
            newValues.put(ROW_TASK,task);
    
            newValues.put(ROW_DATE, date);
            newValues.put(ROW_URGENCY, urgency);
            newValues.put(ROW_TAG, tag);
            return db.update(DATABASE_TABLE,newValues,where,null)!=0;
    
        }
    
        private static class DatabaseHelper extends SQLiteOpenHelper{
            DatabaseHelper(Context context){
                super (context,DATABASE_NAME,null,DATABASE_VERSION);
    
            }
    
             @Override
            public void onCreate(SQLiteDatabase db) {
                db.execSQL(DATABASE_CREATE_SQL);
    
            }
    
             @Override
            public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
                Log.w(TAG,"Upgrading application's database from version"
                        +oldVersion+ " to "+newVersion+
                        " ,which will destroy all the old data!");
                db.execSQL("DROP TABLE IF EXISTS "+DATABASE_TABLE);
                onCreate(db);
            }
        }
    }
    Ultima modifica di ndrokki; 13-04-15 alle 23:03

  2.  

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire risposte
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Torna su
Privacy Policy