2013-09-23 66 views
1

我想从sqlite数据库中排序我的列表视图项目。从sqlite中排序listview项目android

这是我到目前为止已经试过:

final String[] categories = { 
     "Firstname", "Lastname", "Last check up" 
}; 

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

ArrayAdapter<String> adapter = new ArrayAdapter<String> 
     (this,android.R.layout.simple_spinner_item, categories); 
    spinner = (Spinner) findViewById (R.id.spCategory); 
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spinner.setAdapter(adapter); 
    spinner.setOnItemSelectedListener(this); 

    } 

@Override 
public void onItemSelected(AdapterView<?> parent, View v, int position, 
     long id) { 
    // TODO Auto-generated method stub 
    final String f = parent.getItemAtPosition(position).toString(); 

    switch(position){ 
    case 0: 
     ca.setFilterQueryProvider(new FilterQueryProvider() { 
      public Cursor runQuery(CharSequence constraint) { 
       return dbHelper.sortByFirstname(f); 
      } 
     }); 

     break; 
    case 1: 
     ca.setFilterQueryProvider(new FilterQueryProvider() { 
      public Cursor runQuery(CharSequence constraint) { 
       return dbHelper.sortByLastname(f); 
      } 
     }); 
     break; 
    case 2: 
     ca.setFilterQueryProvider(new FilterQueryProvider() { 
      public Cursor runQuery(CharSequence constraint) { 
       return dbHelper.fetchPatientsByName(constraint.toString()); 
      } 
     }); 
     break; 
    } 
} 

DBHelper.class

public Cursor sortByFirstname(CharSequence inputText) throws SQLException { 

     Cursor mCursor = null; 
     if (inputText == null || inputText.length() == 0) { 
     mCursor = myDataBase.query(DB_TABLE, new String[] { 
       KEY_ID, KEY_FNAME, KEY_LNAME, KEY_DIAGNOSIS, KEY_LASTFFUP }, 
     null, null, null, null, null); 

     } 
     else { 
     mCursor = myDataBase.query(true, DB_TABLE, new String[] { 
       KEY_ID, KEY_FNAME, KEY_LNAME, KEY_DIAGNOSIS, KEY_LASTFFUP }, 
     KEY_FNAME + " like '%" + inputText + "%'", null, 
     null, null, "FirstName asc", null); 
     } 
     if (mCursor != null) { 
     mCursor.moveToFirst(); 
     } 
     return mCursor; 

} 

public Cursor sortByLastname(CharSequence inputText) throws SQLException { 

     Cursor mCursor = null; 
     if (inputText == null || inputText.length() == 0) { 
     mCursor = myDataBase.query(DB_TABLE, new String[] { 
       KEY_ID, KEY_FNAME, KEY_LNAME, KEY_DIAGNOSIS, KEY_LASTFFUP }, 
     null, null, null, null, null); 

     } 
     else { 
     mCursor = myDataBase.query(true, DB_TABLE, new String[] { 
       KEY_ID, KEY_FNAME, KEY_LNAME, KEY_DIAGNOSIS, KEY_LASTFFUP }, 
     KEY_FNAME + " like '%" + inputText + "%'", null, 
     null, null, "LastName asc", null); 
     } 
     if (mCursor != null) { 
     mCursor.moveToFirst(); 
     } 
     return mCursor; 

} 

基本上,用户可以通过名字,姓氏从旋转选择列表进行排序或最后检查。我试着做上面的代码无济于事。我不知道代码有什么问题吗?或者我错过了什么?任何想法家伙?非常感谢帮助。谢谢。

+0

如何直接执行查询? “SELECT”+ KEY_ID +“,”+ KEY_FNAME +“,”+ KEY_LNAME +“,”+ KEY_DIAGNOSIS +“,”+ KEY_LASTFFUP +“FROM”+ DB_TABLE +“WHERE”+ KEY_FNAME +“LIKE'%”+ inputText +“%'ORDER BY”+ KEY_FNAME“;” – SKT

回答

2

尝试这样

mCursor = myDataBase.query(DB_TABLE, new String[] { 
       KEY_ID, KEY_FNAME, KEY_LNAME, KEY_DIAGNOSIS, KEY_LASTFFUP }, 
     null, null, null, null, KEY_LNAME + " ASC"); 

更多细节Here

+0

你好,我试过这个,但它没有为我工作。 – Dunkey

+0

使这样的空间,然后尝试KEY_LNAME +“”+“ASC” –

+0

我增加了空间,但它仍然是一样的? – Dunkey

0

试试这个:

mCursor = myDataBase.query(true, DB_TABLE, new String[] { 
       KEY_ID, KEY_FNAME, KEY_LNAME, KEY_DIAGNOSIS, KEY_LASTFFUP }, 
     KEY_FNAME + " like '%" + inputText + "%'", null, 
     null, null, "FirstName ASC", null); 

希望它帮助!

+0

这不适用于我:( – Dunkey

+0

最新问题你有什么? –

+0

当我从微调选择它没有排序 – Dunkey