mercredi 29 juillet 2015

sqlite android list view stopped

i have a problem my app unfortunately stop when i go to the activity2; the main activity it's ok.

Main Activity

     import android.app.Activity;
     import android.app.AlertDialog;
     import android.content.Intent;
      import android.database.Cursor;
      import android.os.Bundle;
      import android.view.Menu;
       import android.view.MenuItem;
    import android.view.View;
     import android.widget.Button;
         import android.widget.EditText;
         import android.widget.Toast;


   public class MainActivity extends Activity { //attributi tipo nome
DatabaseHelper myDB;
EditText editName, editSurname, editMarks;
Button btnAddData;
Button btnviewAll;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    myDB = new DatabaseHelper(this);

    editName = (EditText)findViewById(R.id.editText_name);
    editSurname = (EditText)findViewById(R.id.editText_surname);
    editMarks = (EditText)findViewById(R.id.editText_marks);
    btnAddData = (Button)findViewById(R.id.button_add);
    btnviewAll = (Button)findViewById(R.id.button_viewAll);
    AddData();
    viewAll();

    Button btn=(Button)findViewById(R.id.button); //identifico il bottone  e lo metto in una varibile
    btn.setOnClickListener  (new View.OnClickListener() { //aggiungo una "sentinella" al bottone gestore di evento
    @Override
    public void onClick(View view) {
        Intent openMainActivity2Activity = new Intent(MainActivity.this, MainActivity2Activity.class);
        startActivity(openMainActivity2Activity);
    }
});







}
public  void AddData(){
    btnAddData.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    boolean isInserted = myDB.insertData(editName.getText().toString(),
                            editSurname.getText().toString(),
                            editMarks.getText().toString());
                    if (isInserted = true)
                        Toast.makeText(MainActivity.this, "Data Inserted", Toast.LENGTH_LONG).show();
                    else
                        Toast.makeText(MainActivity.this, "Data not inserted", Toast.LENGTH_LONG).show();
                }
            });
}

public void viewAll() {
    btnviewAll.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Cursor res = myDB.getAllData();
                    if (res.getCount() == 0) {
                        //show message
                        showMessage("Error","Nothing foud");
                        return;
                    }

                    StringBuffer buffer = new StringBuffer();
                    while (res.moveToNext()) {
                        buffer.append("Id :"+ res.getString(0)+"\n");
                        buffer.append("Name :"+ res.getString(1)+"\n");
                        buffer.append("Surname :"+ res.getString(2)+"\n");
                        buffer.append("Marks :"+ res.getString(3)+"\n\n");


                    }
                    //show all data
                    showMessage("Data",buffer.toString());
                }
            }
    );

}

public void showMessage(String title,String Message){
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setCancelable(true);
    builder.setTitle(title);
    builder.setMessage(Message);
    builder.show();
}

DBHelper class

   import android.content.ContentValues;
   import android.content.Context;
 import android.database.Cursor;
   import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;

  public class DatabaseHelper extends SQLiteOpenHelper{ //attributi
public static final String DATABASE_NAME = "student.db";
public static final String TABLE_NAME = "student_table";
public static final String COL_1 = "ID";
public static final String COL_2= "NAME";
public static final String COL_3 = "SURNAME";
public static final String COL_4 = "MARKS";



public DatabaseHelper(Context context) {
    super(context, DATABASE_NAME, null, 1); //chiama il coostruttore della superclasse

}

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("create table " + TABLE_NAME + " (ID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT, SURNAME TEXT, MARKS INTEGER)");

}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME);
    onCreate(db);

}

public boolean insertData(String name,String surname,String marks){
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues contentValues = new ContentValues();
    contentValues.put(COL_2,name);
    contentValues.put(COL_3,surname);
    contentValues.put(COL_4,marks);
    long result = db.insert(TABLE_NAME,null ,contentValues);
    if (result == -1)
        return false;
    else
        return true;
}

public Cursor getAllData() {

    SQLiteDatabase db = this.getWritableDatabase();
    Cursor res = db.rawQuery(" select * from "+TABLE_NAME,null);
    return res;

}

}

Activity 2

      import android.app.Activity;
      import android.app.ListActivity;
    import android.database.Cursor;
      import android.os.Bundle;
     import android.view.Menu;
   import android.view.MenuItem;
   import android.widget.ListView;
      import android.widget.SimpleCursorAdapter;


 public class MainActivity2Activity extends Activity {
DatabaseHelper myDB;
     @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);


 setContentView(R.layout.activity_main_activity2);
   myDB = new DatabaseHelper(this);
   populateListView();


}

@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_activity2, 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();

    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
}



private void populateListView (){
    Cursor res = myDB.getAllData();
    String[] fromFieldNames = new String[] {DatabaseHelper.COL_2, DatabaseHelper.COL_3};
    int [] toView = new int[]{R.id.textViewA, R.id.textViewB};
    SimpleCursorAdapter myCursorAdapter;
    myCursorAdapter = new SimpleCursorAdapter(getBaseContext(),R.layout.item_layout, res, fromFieldNames, toView, 0 );
    ListView myList = (ListView) findViewById(R.id.textViewB);
    myList.setAdapter(myCursorAdapter);
}

}

the error is Caused by: java.lang.IllegalArgumentException: column '_id' does not exist at android.database.AbstractCursor.getColumnIndexOrThrow(AbstractCursor.java:303

Aucun commentaire:

Enregistrer un commentaire