c.getString(c.getPosition()) returns 1 for first element, He for second element, Lithium for third element, and 9.0122 for fourth element.
These are very weird position values to me and I am trying to make sense of this.
Should it be returning the atomicNumber which was set as PRIMARY KEY? I am new to Android, in the documentation it says that cursor.getPosition():
"Returns the current position of the cursor in the row set"
Does this mean it returns the ROWID or the current position in the column?
public void Test(){ String URL = "content://com.apress.gerber.calculator.PeriodicTable/elements"; Uri element = Uri.parse(URL); Cursor c = getContentResolver().query(element, null, null, null, PeriodicTable.ATOMIC_NUMBER); if (c.moveToFirst()) { do{ Toast.makeText(this, c.getString(c.getColumnIndex(PeriodicTable.ATOMIC_NUMBER)) + ", " + c.getString(c.getColumnIndex( PeriodicTable.SYMBOL)) + ", " + c.getString(c.getColumnIndex( PeriodicTable.NAME)) + ", " + c.getString(c.getColumnIndex(PeriodicTable.MOLAR_MASS)) + ", POSITION: " + c.getString(c.getPosition()), Toast.LENGTH_SHORT).show(); } while (c.moveToNext()); } else Toast.makeText(this, "Database is empty.", Toast.LENGTH_SHORT).show(); }
Element.xml that is parsed into the SQLite database:
<elements> <element> <molarMass>1.0079</molarMass> <name>Hydrogen</name> <symbol>H</symbol> <atomicNumber>1</atomicNumber> </element> <element> <molarMass>4.0026</molarMass> <name>Helium</name> <symbol>He</symbol> <atomicNumber>2</atomicNumber> </element> <element> <molarMass>6.941</molarMass> <name>Lithium</name> <symbol>Li</symbol> <atomicNumber>3</atomicNumber> </element> <element> <molarMass>9.0122</molarMass> <name>Beryllium</name> <symbol>Be</symbol> <atomicNumber>4</atomicNumber> </element> </elements>
SQLite table statement:
static final String CREATE_DB_TABLE = " CREATE TABLE " + ELEMENTS_TABLE_NAME + " ( atomicNumber INTEGER PRIMARY KEY ASC, " + " symbol TEXT NOT NULL, " + " name TEXT NOT NULL, " + " molarMass TEXT NOT NULL);";
No comments:
Post a Comment