0

在我的申請,我會從我的數據庫使用此代碼存儲所有可用的表的名稱:如何設置要添加到相反順序的ArrayList項目?

 public ArrayList<Object> showAllTable() 
    { 
     ArrayList<Object> tableList = new ArrayList<Object>(); 

     String SQL_GET_ALL_TABLES = "SELECT name FROM sqlite_master WHERE type='table'"; 
     Cursor cursor = db.rawQuery(SQL_GET_ALL_TABLES, null); 
     cursor.moveToFirst(); 

     if (!cursor.isAfterLast()) 
     { 
      do 
      { 
       if(cursor.getString(0).equals("android_metadata")) 
       { 
        //System.out.println("Get Metadata"); 
        continue; 
       } 
       else 
       { 
        tableList.add(cursor.getString(0)); 
       } 
      } 
      while (cursor.moveToNext()); 
     } 
     cursor.close(); 

     return tableList; 

    } 

是我能夠存儲。但是,當我要將它顯示到ListView時,它將以最後顯示的最後創建的方式顯示。我想將表格列表顯示爲Last created,首先顯示ListView。

請幫我,在我的代碼中需要做些什麼來設置這種顯示錶格的方式?

回答

2

有幾種方法可以做到這一點。最簡單的可能是通過添加ORDER BY來改變你的SQL調用。這裏的東西,你可以嘗試一下:

款的訂單上升:

String SQL_GET_ALL_TABLES = "SELECT name FROM sqlite_master WHERE type='table' ORDER BY name ASC"; 

或降序:

String SQL_GET_ALL_TABLES = "SELECT name FROM sqlite_master WHERE type='table' ORDER BY name DESC"; 

替代解決方案

另一種選擇是像你一樣去做現在就做,而不是從最後一個到第一個項目通過Cursor。下面是一些僞代碼:

if (cursor.moveToLast()) { 
    while (cursor.moveToPrevious()) { 
     // Add the Cursor data to your ArrayList 
    } 
} 
+0

感謝。它很棒。 –

+0

不客氣:-) –

+0

謝謝。這對我有幫助。 – Manisha

2

返回之前的值只要調用方法

Collections.reverse(tableList); 

看到完整的代碼

public ArrayList<Object> showAllTable() 

{ 
ArrayList tableList = new ArrayList(); 

String SQL_GET_ALL_TABLES = "SELECT name FROM sqlite_master WHERE type='table'"; 
Cursor cursor = db.rawQuery(SQL_GET_ALL_TABLES, null); 
cursor.moveToFirst(); 

if (!cursor.isAfterLast()) 
{ 
    do 
    { 
     if(cursor.getString(0).equals("android_metadata")) 
     { 
      //System.out.println("Get Metadata"); 
      continue; 
     } 
     else 
     { 
      tableList.add(cursor.getString(0)); 
     } 
    } 
    while (cursor.moveToNext()); 
} 
cursor.close(); 
Collections.reverse(tableList); 
return tableList; 
} 
+0

感謝您的回覆。但是Michell Bak's Answer的作品很棒。也感謝你。 –

+0

非常歡迎親愛的..但一件小事情,如果您使用「SELECT名稱FROM sqlite_master WHERE類型='表'ORDER BY名稱ASC」,這將返回名稱升序,而不是在插入order.For例如,第一個我創建了名爲'tableone','tabletwo',tablethree'和'tablefour'的表。該查詢返回結果爲「'tablefour','tableone','tablethree'和'tabletwo'」所以結果不是按照插入順序或相反順序。請檢查一下。不要採取消極的態度。只是我正在詳細解釋。 –

+0

是的,我知道。這就是爲什麼我正在使用替代解決方案Michell Bak在他的回答中給出了什麼。它的工作原理就是我想要的。 –

相關問題