Recyclerview按时间升序排序

时间:2017-05-27 15:06:13

标签: android

我有一个显示新闻的回收者视图。

新闻由name_news,image_news,time_news组成。

我从mysqldatabse获取数据。

这是我的适配器类:

public class PostAdapter2 extends RecyclerView.Adapter<PostAdapter2.ViewHolder>{

    public Context c;
    public FragmentManager mContext;
    public ArrayList<News_data> original_items = new ArrayList<>();
    public ArrayList<News_data> filtered_items = new ArrayList<>();

    public ArrayList<Simplenews_data> original_items2 = new ArrayList<>();
    public ArrayList<Simplenews_data> filtered_items2 = new ArrayList<>();
    //   ItemFilter mFilters = new ItemFilter();

    public PostAdapter2(Context c, ArrayList<News_data> postList) {
        this.c = c;
        this.original_items = postList;
        this.filtered_items = postList;

    }

    public PostAdapter2(FragmentManager mContext, ArrayList<Simplenews_data> postList) {
        this.mContext = mContext;
        this.original_items2 = postList;
        this.filtered_items2 = postList;

    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_news, parent, false);


        return new ViewHolder(view);

    }

    @Override
    public void onBindViewHolder(ViewHolder holder, final int position) {

        try {

            final Simplenews_data post = filtered_items2.get(position);

            PicassoClient.downloadImage(c, post.getImage_simplenews(), holder.image_news);
            holder.txt_news_title.setText(post.getName_simplenews());
            holder.txt_date.setText(post.getTime_simplenews());

            holder.setItemClickListener(new ItemClickListener() {
                @Override
                public void onItemClick() {
                    Bundle x = new Bundle();
                    x.putString("news_title", post.getName_simplenews());
                    x.putString("news", post.getDesc_simplenews());
                    x.putString("image",post.getImage_simplenews());
                    x.putString("time",post.getTime_simplenews());
                    x.putString("date",post.getDate_simplenews());

                    Fragment descriptionFragment = new DescriptionFragment();
                    FragmentTransaction transaction = mContext.beginTransaction();
                    descriptionFragment.setArguments(x);
                    transaction.replace(R.id.framelayout, descriptionFragment).addToBackStack(null).commit();
                }
            });

        } catch (Exception e) {
            e.printStackTrace();
        }
    }



    @Override
    public int getItemCount() {
        return filtered_items2.size();
    }





    public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

        ItemClickListener itemClickListener;
        TextView txt_news_title,txt_date;
        ImageView image_news;

        public ViewHolder(View itemView) {
            super(itemView);
            txt_news_title = (TextView) itemView.findViewById(R.id.txt_news_title);
            txt_date = (TextView) itemView.findViewById(R.id.txt_timedate);
            image_news = (ImageView) itemView.findViewById(R.id.image_news);
            itemView.setOnClickListener(this);

        }


        @Override
        public void onClick(View v) {
            try {
                this.itemClickListener.onItemClick();

            }catch (Exception e)
            {
                e.printStackTrace();
            }


        }
        public void setItemClickListener(ItemClickListener itemClickListener)
        {
            this.itemClickListener=itemClickListener;
        }
    }

}

我正在使用PHP界面添加新闻。

getTime_simplenews()包含新闻摘要时间格式:14:00

所以我想在回收者视图中显示即时新闻,而不是在之前的新闻中。

非常感谢。

更新:

public class Simplenews_data {

    int id_simplenews;
    String name_simplenews,image_simplenews,desc_simplenews,time_simplenews,date_simplenews;

    public String getDate_simplenews() {
        return date_simplenews;
    }

    public void setDate_simplenews(String date_simplenews) {
        this.date_simplenews = date_simplenews;
    }

    public String getTime_simplenews() {
        return time_simplenews;
    }

    public void setTime_simplenews(String time_simplenews) {
        this.time_simplenews = time_simplenews;
    }

    public int getId_simplenews() {
        return id_simplenews;
    }

    public void setId_simplenews(int id_simplenews) {
        this.id_simplenews = id_simplenews;
    }

    public String getName_simplenews() {
        return name_simplenews;
    }

    public void setName_simplenews(String name_simplenews) {
        this.name_simplenews = name_simplenews;
    }

    public String getImage_simplenews() {
        return image_simplenews;
    }

    public void setImage_simplenews(String image_simplenews) {
        this.image_simplenews = image_simplenews;
    }

    public String getDesc_simplenews() {
        return desc_simplenews;
    }

    public void setDesc_simplenews(String desc_simplenews) {
        this.desc_simplenews = desc_simplenews;
    }

片段代码:

 public void parseJson2(String response) {

        try {

            JSONArray array = new JSONArray(response);
            JSONObject jsonObject = null;
            post_array2.clear();
            Simplenews_data p;
            for (int i = 0; i < array.length(); i++) {
                jsonObject = array.getJSONObject(i);

                int id_simplenews = jsonObject.getInt("id_simplenews");
                String name_simplenews = jsonObject.getString("name_simplenews");
                String image_simplenews = jsonObject.getString("image_simplenews");
                String desc_simplenews = jsonObject.getString("desc_simplenews");
                String time_simplenews = jsonObject.getString("time_simplenews");
                String date_simplenews = jsonObject.getString("date_simplenews");



                p = new Simplenews_data();
                p.setId_simplenews(id_simplenews);
                p.setName_simplenews(name_simplenews);
                p.setImage_simplenews(image_simplenews);
                p.setDesc_simplenews(desc_simplenews);
                p.setTime_simplenews(time_simplenews);
                p.setDate_simplenews(date_simplenews);

                post_array2.add(p);

            }

        } catch (JSONException e) {
            swipeRefreshLayout.setRefreshing(false);
            e.printStackTrace();
        }
        adapter = new PostAdapter2(getFragmentManager(), post_array2);
        recycler_post.setAdapter(adapter);
        swipeRefreshLayout.setRefreshing(false);


    }

1 个答案:

答案 0 :(得分:1)

我已更新您的模型类并实现了Comparable

public class Simplenews_data implements Comparable<Simplenews_data> {

    int id_simplenews;
    String name_simplenews,image_simplenews,desc_simplenews,time_simplenews,date_simplenews;

    public String getDate_simplenews() {
        return date_simplenews;
    }

    public void setDate_simplenews(String date_simplenews) {
        this.date_simplenews = date_simplenews;
    }

    public String getTime_simplenews() {
        return time_simplenews;
    }

    public void setTime_simplenews(String time_simplenews) {
        this.time_simplenews = time_simplenews;
    }

    public int getId_simplenews() {
        return id_simplenews;
    }

    public void setId_simplenews(int id_simplenews) {
        this.id_simplenews = id_simplenews;
    }

    public String getName_simplenews() {
        return name_simplenews;
    }

    public void setName_simplenews(String name_simplenews) {
        this.name_simplenews = name_simplenews;
    }

    public String getImage_simplenews() {
        return image_simplenews;
    }

    public void setImage_simplenews(String image_simplenews) {
        this.image_simplenews = image_simplenews;
    }

    public String getDesc_simplenews() {
        return desc_simplenews;
    }

    public void setDesc_simplenews(String desc_simplenews) {
        this.desc_simplenews = desc_simplenews;
    }

    @Override
    public int compareTo(MyObject o) {
        Date newDate = formatDateTime(o.getTime_simplenews(), "HH:mm", "YYYY-MM-DD HH:mm");
        Date inputDate = formatDateTime(getTime_simplenews(), "HH:mm", "YYYY-MM-DD HH:mm");
        return inputDate.compareTo(newDate);
    }

    public Date formatDateTime(String date, String fromFormat, String toFormat) {
        Date d = null;
        try {
            d = new SimpleDateFormat(fromFormat, Locale.US).parse(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return new SimpleDateFormat(toFormat, Locale.US).parse(d);
    }
}

使用以下代码对列表进行排序

Collections.sort(yourList);