AS安卓开发(如何按照时间日期进行排序)

之前做期中作业的时候,有做到过对应用笔记按照时间顺序排序的功能,也就是得按照时间戳顺序进行排列

排列前:
这里写图片描述这里写图片描述

大致步骤如下:

1.首先需要读取数据,然后存放到List里面;

2.接下来,取出数据里的时间戳,把String转换成为Date;

3.最后把List中元素按照Date进行排列。

具体代码如下:

//把List按照时间轴顺序排序
@Override
    public int getItemCount() {
        return mNoteList.size();
    }

    public static class NoteViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener,View.OnLongClickListener{

        private TextView mTitleTextView;
        private TextView mTimeTextView;
        private Note mNote;
        private OnLongItemClickListener mOnLongItemClickListener;

        public NoteViewHolder(View itemView) {
            super(itemView);
            mTitleTextView = itemView.findViewById(R.id.title_text_view);
            mTimeTextView = itemView.findViewById(R.id.time_text_view);
            itemView.setOnClickListener(this);
            itemView.setOnLongClickListener(this);
        }

        public void bind(Note note,OnLongItemClickListener onLongItemClickListener){
            mNote = note;
            mOnLongItemClickListener = onLongItemClickListener;
            if(mTitleTextView != null && mTimeTextView != null){
                mTitleTextView.setText(note.getTitle());
                Date date = new Date(note.getModifyTime());
                SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                String dateString = formatter.format(date);
                mTimeTextView.setText(dateString);
            }

            itemView.setBackgroundColor(mContext.getResources().getColor(mNote.getColor()));
        }

排序也还有比较简单的方式,可以通过冒泡排序对时间戳进行降序排列,如:

//将List按照时间降序进行排列   
@SuppressLint("SimpleDateFormat")  
private List<TestEntity> invertOrderList(List<TestEntity> L){  
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
    Date d1;  
    Date d2;  
    TestEntity temp_r = new TestEntity();  
    //这是一个冒泡排序,将大的放在数组前面
    for(int i=0; i<L.size()-1; i++){  
        for(int j=i+1; j<L.size();j++){  
           ParsePosition pos1 = new ParsePosition(0);  
           ParsePosition pos2 = new ParsePosition(0);  
           d1 = sdf.parse(L.get(i).getDate(), pos1);  
           d2 = sdf.parse(L.get(j).getDate(), pos2);  
           if(d1.before(d2)){//如果日期靠前,则换顺序 
               temp_r = L.get(i);  
               L.set(i, L.get(j));  
               L.set(j, temp_r);  
           }  
        }  
    }  
    return L;  
}  

其实排序方式还有很多种,之前也还有看到过通过反编译文件管理器apk的方式来了解排序原理的,进而发现重写Comparator的实现类FileComparator来实现按照文章的创建时间顺序排列的,也可以通过其中的Compare类来实现。

原作者:谢月荫
原文链接:https://blog.csdn.net/xyy_d_semine/article/details/80716285

猜你喜欢

转载自blog.csdn.net/fjnu_se/article/details/80880865