lundi 14 mars 2016

SQLite data show in ListView in Lolipop

I have written a code for Save data in my SQLite Database and i want to show it in my ListView.

My MainActivity is

public class MainActivity extends AppCompatActivity{

//// variable deaclear

public static final String ROW_ID = "row_id";
public static final String TITLE = "title";

private ListView listView;

private DatabaseConnector databaseConnector;
private ListView noteListView;
private CursorAdapter noteAdapter;
static String[] from = new String[]{TITLE};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

     int[] to = new int[] {R.id.ViewTitleNotes};
    listView = (ListView) findViewById(R.id.listView);

    Cursor cursor = databaseConnector.listAllNotes();

    noteAdapter = new SimpleCursorAdapter(MainActivity.this, R.layout.list_note, cursor, from, to);
    listView.setAdapter(noteAdapter);
   listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
       @Override
       public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

           Intent intent = new Intent(MainActivity.this, ViewNote.class);

           intent.putExtra(ROW_ID , id);
           startActivity(intent);
       }
   });
}


@Override
protected void onResume() {
    super.onResume();

    new GetNotes().execute(from);

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();

   switch (id){

       case R.id.add_note:

           Intent intent = new Intent(MainActivity.this , AddEditNote.class);
           startActivity(intent);
           break;

     default:
         break;
   }
    return super.onOptionsItemSelected(item);
}


// get note Asyntask

public class GetNotes extends AsyncTask<Object , Object , Cursor>{
    DatabaseConnector databaseConnector = new DatabaseConnector(MainActivity.this);

    @Override
    protected Cursor doInBackground(Object... params) {



        databaseConnector.open();
        return databaseConnector.listAllNotes();

    }

    @Override
    protected void onPostExecute(Cursor cursor) {
        super.onPostExecute(cursor);
        databaseConnector.close();
    }
}

@Override
protected void onStop() {
    super.onStop();
    Cursor cursor = noteAdapter.getCursor();
    if (cursor!=null){
        cursor.deactivate();

    }
    noteAdapter.changeCursor(null);

}

}

And my DataBaseConnector class is

public class DatabaseConnector {

private static final String DB_NAME = "MyNotes";
public static final String TABLE_NAME = "tablenotes";
public static final String TITLE = "title";
public static final String NOTE = "note";
public static final String ID = "_id";
public static final int DATABASE_VERSION = 1;

private SQLiteDatabase database;
private DatabaseHelper dbOpenHelper;

public DatabaseConnector(Context context){

   dbOpenHelper = new DatabaseHelper(context , DB_NAME , null ,DATABASE_VERSION);
     }

public void open(){
    database = dbOpenHelper.getWritableDatabase();

}

// databse close

public void close(){

    if (database!=null){
        database.close();
    }
}
// insert data into database

public void  insertData(String title, String note){

    ContentValues contentValues = new ContentValues();

    contentValues.put(TITLE , title);
    contentValues.put(NOTE , note);

    open();
    database.insert(TABLE_NAME, null, contentValues);
    close();
}


public void updateData( long id, String title, String note){

    ContentValues contentValues = new ContentValues();
    contentValues.put(TITLE , title);
    contentValues.put(NOTE, note);

    open();

    database.update(TABLE_NAME, contentValues, ID + "=" + id, null);

    close();
}

public void deletData(long id)throws  SQLException{
    open();
    database.delete(TABLE_NAME, ID + "=" + id, null);
    close();
}


// get all notes

public Cursor listAllNotes(){
    return database.query(TABLE_NAME, new String[]{ID , TITLE}, null , null , null , null ,null);

}


 /// get a single note
public Cursor getOneNote(long id){
    return database.query(TABLE_NAME, null, ID+"="+id, null, null,null,null);
}

}

When i run this code Log cat show me a error in MainActivity.java class. In this line Cursor cursor = databaseConnector.listAllNotes();

How i can solve this issue?

Aucun commentaire:

Enregistrer un commentaire