2017-03-13 3 views
0

リストビューを優先して並べ替える必要があります。まず、リストビューを2人でソートする必要があります。デュエットが同じであれば、評価マークでソートする必要があります。アセスメントマークが同じ場合は、時間の完了までにソートする必要があります。これはプランナーアプリです。どのように私はそれを並べ替えることができますか?私はアンドロイドスタジオの新人です。私はYouTubeチュートリアルを通してコードを作りました。アンドロイドスタジオで多くの条件でsqliteをソートするには?

listDataAdapter=new ListDataAdapter(getApplicationContext(),R.layout.row_layout); 
listview.setAdapter(listDataAdapter); 
userDBHelper=new UserDbHelper(getApplicationContext()); 
sqLiteDatabase=userDBHelper.getReadableDatabase(); 
cursor=userDBHelper.getInformation(sqLiteDatabase); 
    if (cursor.moveToFirst()) 
      { 
       do { 
        String title,duedate,time_submission,time_completion,assessmentmark; 
        title=cursor.getString(0); 
        duedate=cursor.getString(1); 
        time_submission=cursor.getString(2); 
        time_completion=cursor.getString(3); 
        assessmentmark=cursor.getString(4); 
        DataProvider dataProvider=new DataProvider(title,duedate,time_submission,time_completion,assessmentmark); 
        listDataAdapter.add(dataProvider); 

       }while (cursor.moveToNext()); 
      } 
public Cursor getInformation(SQLiteDatabase db) 
    { 
     Cursor cursor; 
     String[] projections={UserData.NewTaskInfo.TITLE, UserData.NewTaskInfo.DUEDATE, UserData.NewTaskInfo.TIME_SUBMISSION, 
       UserData.NewTaskInfo.TIME_COMPLETION, UserData.NewTaskInfo.ASSESSMENTMARK}; 
     cursor=db.query(UserData.NewTaskInfo.TABLE_NAME,projections,null,null,null,null,null); 
     return cursor; 

    } 
@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View row=convertView; 
    layoutHandler layoutHandler; 
    if (row==null) 
    { 
     LayoutInflater layoutInflater=(LayoutInflater) this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     row=layoutInflater.inflate(R.layout.row_layout,parent,false); 
     layoutHandler =new layoutHandler(); 
     layoutHandler.TITLE=(TextView) row.findViewById(R.id.text_title); 
     layoutHandler.DUEDATE=(TextView)row.findViewById(R.id.text_duedate); 
     layoutHandler.TIMESUBMISSION=(TextView)row.findViewById(R.id.text_time_submission); 
     layoutHandler.TIMECOMPLETION=(TextView)row.findViewById(R.id.text_time_completion); 
     layoutHandler.ASSESSMENTMARK=(TextView)row.findViewById(R.id.text_assessmentmark); 
     row.setTag(layoutHandler); 
    }else{  //if the row already existing 

     layoutHandler=(layoutHandler) row.getTag(); 

    } 
    DataProvider dataProvider=(DataProvider) this.getItem(position); 
    layoutHandler.TITLE.setText(dataProvider.getTitle()); 
    layoutHandler.DUEDATE.setText(dataProvider.getDuedate()); 
    layoutHandler.TIMESUBMISSION.setText(dataProvider.getTime_submission()); 
    layoutHandler.TIMECOMPLETION.setText(dataProvider.getTime_completion()); 
    layoutHandler.ASSESSMENTMARK.setText(dataProvider.getAssessmentmark()); 
    return row; 
} 

答えて

0

query() methodの第七のパラメータは、SQL ORDER BY句です。 このような句can speficy multiple columns

String[] projections={UserData.NewTaskInfo.TITLE, UserData.NewTaskInfo.DUEDATE, UserData.NewTaskInfo.TIME_SUBMISSION, 
     UserData.NewTaskInfo.TIME_COMPLETION, UserData.NewTaskInfo.ASSESSMENTMARK}; 
String orderBy = UserData.NewTaskInfo.DUEDATE + "," + 
       UserData.NewTaskInfo.ASSESSMENTMARK + "," + 
       UserData.NewTaskInfo.TIME_COMPLETION; 
cursor = db.query(UserData.NewTaskInfo.TABLE_NAME, projections, null, 
        null, null, null, orderBy); 
+0

それは動作しますが、それが動作する場合、(http://stackoverflow.com/help/accepted-answer)[答えを受け入れる]を検討 – newLearner

+0

..ありがとうございました。 –

関連する問題