我一直在試圖找出這個問題而沒有尋求幫助,但我已經達到了我真正無法弄清楚的程度。我的數據庫查詢顯示按字母順序對值進行排序
這裏是我用來查詢數據庫的功能(我不得不保密的改變名稱):
public Cursor getAllItems(){
Cursor cursor = db.query(true, DATABASE_TABLE, new String []{KEY_NAME, KEY_1,KEY_2, KEY_3,
KEY_4, KEY_5, KEY6,
KEY_7, KEY_8, KEY_9, KEY_10, KEY_11, KEY_12,
KEY_13}, null, null, null, null, null, null);
cursor.moveToFirst();
return cursor;
}
這是我填充已使用XML創建一個tablelayout。
public void populate(){
db = new DBAdapter(this);
TableLayout TL = (TableLayout)findViewById(R.id.table);
db.open();
c = db.getAllItems();
while(!c.isAfterLast()){
if(Integer.toString(c.getPosition())!=null){
TableRow TR = new TableRow(this);
TR.setId(c.getPosition());
TextView column1 = new TextView(this);
TextView column2 = new TextView(this);
TextView column3 = new TextView(this);
TR.setLayoutParams(new TableRow.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
column1.setGravity(0x01);
column1.setTextColor(0xff000000);
column1.setTextSize(2,20);
//column1.setText(c.getString(3));
column1.setText(Integer.toString(c.getPosition()));
TR.addView(column1);
column2.setGravity(0x01);
column2.setTextColor(0xff000000);
column2.setTextSize(2,20);
column2.setText(c.getString(0));
TR.addView(column2);
column3.setGravity(0x01);
column3.setTextColor(0xff000000);
column3.setTextSize(2,20);
//column3.setText(c.getString(1));
column3.setText(Integer.toString(TR.getId()));
TR.addView(column3);
TR.setOnLongClickListener(this);
TL.addView(TR);
1Total += c.getDouble(1);
2Total += c.getDouble(2);
}
c.moveToNext();
}
db.close();
如果我查看使用DDMS數據庫,一切都被顯示在正確的順序(其中我插入到表中的順序)。但是,當我嘗試在tablelayout中顯示數據時,出於某種原因,它會根據KEY_NAME值組織值。因此,如果我將數據插入表格中,如「B - C - D - A - E」,它將填充我的表格佈局「A - B - C - D - E」
奇怪的是,以便在任何給定行上單擊並生成一個顯示其餘信息的對話框片段,並且此信息是正確的。因此,如果使用上面的例子,我長按一下顯示的「C」行,然後我會實際得到「D」的數據,這是正確的。
有什麼想法?
我打算接受這個答案作爲解決方案。我解決這個問題的方式基本上就是你在第二部分所說的。我已經有一個autoincrementing id,但我沒有做的是在我的查詢語句中返回id。我還編輯了查詢函數調用,如下所示: Cursor cursor = db.query(DATABASE_TABLE,new String [] {KEY_ROWID,KEY_NAME,KEY_1,KEY_2,KEY_3,KEY_4,KEY_6,KEY_7,KEY_8,KEY_9,KEY_9,KEY_10 ,KEY_11,KEY_12,\t KEY_13},null,null,null,KEY_ROWID); – JaRay