如何按日期对分组的recyclerview排序?

时间:2018-10-14 17:56:05

标签: java android android-recyclerview

我具有正常的recyclerview,并且已经成功按日期对它进行了排序。但是现在我将recyclerview分组了,我想对其进行排序。我试图像普通的recyclerview一样进行排序,但是它不起作用。

在这种情况下,我有java类来标记日期和其中的数据。 ListItem,DaftarPengumuman,PengumumanItem和GeneralItem。

哈希图

   private HashMap<String, List<DaftarPengumuman>> groupDataIntoHashMap(List<DaftarPengumuman> listOfDaftarPengumuman) {

        HashMap<String, List<DaftarPengumuman>> groupedHashMap = new HashMap<>();

        for (DaftarPengumuman daftarPengumuman : listOfDaftarPengumuman) {

            String hashMapKey = daftarPengumuman.getTanggal_peng();

            if (groupedHashMap.containsKey(hashMapKey)) {
                // The key is already in the HashMap; add the pojo object
                // against the existing key.
                groupedHashMap.get(hashMapKey).add(daftarPengumuman);
            } else {
                // The key is not there in the HashMap; create a new key-value pair
                List<DaftarPengumuman> list = new ArrayList<>();
                list.add(daftarPengumuman);
                groupedHashMap.put(hashMapKey, list);
            }
        }


        return groupedHashMap;
    }

    private void hashMap(){
        HashMap<String, List<DaftarPengumuman>> groupedHashMap = groupDataIntoHashMap(listPengumuman);

        for (String tanggal_peng : groupedHashMap.keySet()) {
            PengumumanItem nameItem = new PengumumanItem();
            nameItem.setTanggal_peng(tanggal_peng);
            consolidatedList.add(nameItem);



            for (DaftarPengumuman daftarPengumuman : groupedHashMap.get(tanggal_peng)) {
                GeneralItem generalItem = new GeneralItem();
                generalItem.setDaftarPengumuman(daftarPengumuman);//setBookingDataTabs(bookingDataTabs);
                consolidatedList.add(generalItem);
            }
        }
        adapter.notifyDataSetChanged();

    }

pengumumanitem

public class PengumumanItem extends ListItem {

    private String tanggal_peng;

    public String getTanggal_peng() {
        return tanggal_peng;
    }

    public void setTanggal_peng(String tanggal_peng) {
        this.tanggal_peng = tanggal_peng;
    }



    @Override
    public int getType() {
        return TYPE_NAME;
    }
}

列表项

public abstract class ListItem {
    public static final int TYPE_NAME = 0;
    public static final int TYPE_TASK = 1;

    abstract public int getType();

}

常规项目

public class GeneralItem extends ListItem {



    private DaftarPengumuman daftarPengumuman;

    public DaftarPengumuman getDaftarPengumuman() {

        return daftarPengumuman;
    }


    public void setDaftarPengumuman(DaftarPengumuman daftarPengumuman) {
        this.daftarPengumuman = daftarPengumuman;
    }

    public int getType(){
        return TYPE_TASK;
    }
}

daftarpengumuman.class

  public class DaftarPengumuman {
        private String nama_p,deskripsi,judul,tanggal_peng;
        private Long date_milisecond;


        public DaftarPengumuman(String nama_p, String deskripsi, String judul, String tanggal_peng) {
            this.nama_p = nama_p;
            this.deskripsi = deskripsi;
            this.judul = judul;
            this.tanggal_peng = tanggal_peng;
        }

        public Long getDate_milisecond() {
            return date_milisecond;
        }

        public void setDate_milisecond(Long date_milisecond) {
            this.date_milisecond = date_milisecond;
        }

        public String getDeskripsi() {
            return deskripsi;
        }

        public void setDeskripsi(String deskripsi) {
            this.deskripsi = deskripsi;
        }

        public String getJudul() {
            return judul;
        }

        public void setJudul(String judul) {
            this.judul = judul;
        }

        public String getTanggal_peng() {
            return tanggal_peng;
        }

        public void setTanggal_peng(String tanggal_peng) {
            this.tanggal_peng = tanggal_peng;
        }

        public DaftarPengumuman() {

        }

        public String getNama_p() {
            return nama_p;
        }

        public void setNama_p(String nama_p) {
            this.nama_p = nama_p;
        }


    }

myadapter

package com.example.yehezkiel.eclassapp;

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Yehezkiel on 7/26/2018.
 */

public class myAdapterPengumuman extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    private Context mContext;
    List<ListItem> consolidatedList = new ArrayList<>();

    public myAdapterPengumuman(Context context, List<ListItem> consolidatedList) {
        this.consolidatedList = consolidatedList;
        this.mContext = context;

    }


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

        RecyclerView.ViewHolder viewHolder = null;
        LayoutInflater inflater = LayoutInflater.from(parent.getContext());

        switch (viewType) {

            case ListItem.TYPE_TASK:
                View v1 = inflater.inflate(R.layout.costume_row_pengumuman, parent,
                        false);
                viewHolder = new GeneralViewHolder(v1);
                break;

            case ListItem.TYPE_NAME:
                View v2 = inflater.inflate(R.layout.costum_row_pengumuman_name, parent, false);
                viewHolder = new DateViewHolder(v2);
                break;
        }

        return viewHolder;
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {

        switch (viewHolder.getItemViewType()) {

            case ListItem.TYPE_TASK:

                GeneralItem generalItem   = (GeneralItem) consolidatedList.get(position);
                GeneralViewHolder generalViewHolder= (GeneralViewHolder) viewHolder;
                generalViewHolder.txtJudul.setText(generalItem.getDaftarPengumuman().getJudul());
                generalViewHolder.txtDeskripsi.setText(generalItem.getDaftarPengumuman().getDeskripsi());
                generalViewHolder.txtTanggal.setText(generalItem.getDaftarPengumuman().getTanggal_peng());


                break;

            case ListItem.TYPE_NAME:
                PengumumanItem dateItem = (PengumumanItem) consolidatedList.get(position);
                DateViewHolder dateViewHolder = (DateViewHolder) viewHolder;

                dateViewHolder.txtName.setText(dateItem.getTanggal_peng());
                // Populate date item data here

                break;
        }
    }





    // ViewHolder for date row item
    class DateViewHolder extends RecyclerView.ViewHolder {
        protected TextView txtName;

        public DateViewHolder(View v) {
            super(v);
            this.txtName = (TextView) v.findViewById(R.id.name_p);

        }
    }

    // View holder for general row item
    class GeneralViewHolder extends RecyclerView.ViewHolder {
        protected TextView txtJudul,txtDeskripsi,txtTanggal;

        public GeneralViewHolder(View v) {
            super(v);
            this.txtJudul = (TextView) v.findViewById(R.id.judul_p);
            this.txtDeskripsi = (TextView) v.findViewById(R.id.deskripsi_p);
            this.txtTanggal = (TextView) v.findViewById(R.id.tanggal_p);


        }
    }

    @Override
    public int getItemViewType(int position) {
        return consolidatedList.get(position).getType();
    }

    @Override
    public int getItemCount() {
        return consolidatedList != null ? consolidatedList.size() : 0;
    }


}

0 个答案:

没有答案