Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何按Notes对象的长参数对ListView排序_Android_Listview_Sorting - Fatal编程技术网

Android 如何按Notes对象的长参数对ListView排序

Android 如何按Notes对象的长参数对ListView排序,android,listview,sorting,Android,Listview,Sorting,嗨,我是ArrayAdapters的新手,我需要根据我的Notes对象的长参数对我的ListView进行排序,我尝试了按DateModified对我的ListView进行排序,DateModified是长参数,但没有结果当我从菜单中按“排序”时,应该会执行该操作。 谁能帮我解决这个问题,我会很感激的 这是我活动的代码 public class NoteListActivity extends Activity { private ListView listView; NotesAdapter

嗨,我是ArrayAdapters的新手,我需要根据我的Notes对象的长参数对我的ListView进行排序,我尝试了按DateModified对我的ListView进行排序,DateModified是长参数,但没有结果当我从菜单中按“排序”时,应该会执行该操作。

谁能帮我解决这个问题,我会很感激的

这是我活动的代码

public class NoteListActivity extends Activity {

private ListView listView;
NotesAdapter adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_note_list);
    listView = (ListView) findViewById(R.id.listView_notes);

    adapter = new NotesAdapter(NoteListActivity.this, generateNoteList());
    listView.setAdapter(adapter);

}
private OnItemClickListener onListItemClickListener = new OnItemClickListener() {


private ArrayList<Note> generateNoteList() {
    final ArrayList<Note> noteList = new ArrayList<Note>();
    for (int i = 0; i < 10; i++) {
        Note note = new Note();
        note.setTitle("Title" + i);
        note.setDateCreated(Calendar.getInstance().getTimeInMillis());
        note.setDateModified(Calendar.getInstance().getTimeInMillis());
        noteList.add(note);
    }
    return noteList;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater menuInflater = getMenuInflater();
    menuInflater.inflate(R.menu.note_list_menu, menu);
    return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
    final int clickedItemId = item.getItemId();
    switch (clickedItemId) {
        case R.id.add:
            return true;

        case R.id.sort_list:
            return true;
        default:
            return super.onOptionsItemSelected(item);

    }
}}
公共类NoteListActivity扩展活动{
私有列表视图列表视图;
注:适配器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u note\u list);
listView=(listView)findViewById(R.id.listView\u注释);
adapter=newNotesAdapter(NoteListActivity.this,generateNotList());
setAdapter(适配器);
}
私有OnItemClickListener onListItemClickListener=新建OnItemClickListener(){
私有ArrayList GenerateNotList(){
final ArrayList noteList=新ArrayList();
对于(int i=0;i<10;i++){
注释=新注释();
注:设置标题(“标题”+i);
note.setDateCreated(Calendar.getInstance().getTimeInMillis());
note.setDateModified(Calendar.getInstance().getTimeInMillis());
注释列表。添加(注释);
}
返回注释列表;
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
MenuInflater MenuInflater=getMenuInflater();
菜单充气(右菜单注释列表菜单,菜单);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
final int clickedItemId=item.getItemId();
开关(单击编辑EMID){
案例R.id.add:
返回true;
案例R.id.sort\u列表:
返回true;
违约:
返回super.onOptionsItemSelected(项目);
}
}}

实施
注释
类与
可比
并将
可比的代码放入
中,例如:

class Note implements Comparable<Note>{
..
...

    @Override
    public int compareTo(Note n) {  
      return this.modifiedDate-n.modifiedDate;
    }

}
然后单击排序按钮的
onClick
,只需调用:

adapter.sort();
如果要根据不同字段进行排序,只需为ex的每个字段实现比较器:

class DateCreatedComaparator implements Comparator<Note>{
    public int compare(Note n1,Note n2){
       return n1.dateCreated-n2.dateCreated; 
    }
} 

当我写公共布尔比较器(注n)时,它会说…-标记上的语法错误,错误的构造-标记上的语法错误“只需写比较器(注n)请检查我编辑的ans在第一次将您的比较器函数更改为新函数时出错
class DateCreatedComaparator implements Comparator<Note>{
    public int compare(Note n1,Note n2){
       return n1.dateCreated-n2.dateCreated; 
    }
} 
public void sort(){
   Colllections.sort(noteList,new DateCreatedComaparator());
   notifyDataSetChanged();
}