天天看點

RecyclerView 展示同日期下的資料資訊RecyclerView 展示同日期下的資料資訊

RecyclerView 展示同日期下的資料資訊

概述:

最近有一個業務需求,ListView根據日期進行展示,但是ListView還是沒有RecyclerView好用,好處我就不再詳述了,沒用過的可以百度一下,很簡單,很友善!

效果:

RecyclerView 展示同日期下的資料資訊RecyclerView 展示同日期下的資料資訊

主要代碼:

GroupItemHolder.java

public class GroupItemHolder extends NormalItemHolder {

    public TextView group_item_time;

    public GroupItemHolder(Context context, View itemView, CustomClickListener listener, 
                           CustomItemLongClickListener longClickListener) {
        super(context, itemView, listener, longClickListener);
        group_item_time = (TextView) itemView.findViewById(R.id.group_item_time);
    }
}           

NormalItemHolder.java

public class NormalItemHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener {
    public TextView out_trade_no;
    public TextView amout;
    public TextView payType;
    public TextView time;
    public TextView today;
    public ImageView imageType;


    private CustomClickListener listener;
    private CustomItemLongClickListener longClickListener;
    private Context context;

    public NormalItemHolder(Context context, View itemView, CustomClickListener listener,
                            CustomItemLongClickListener longClickListener) {
        super(itemView);
        this.context = context;
        this.listener = listener;
        this.longClickListener = longClickListener;
        time = (TextView) itemView.findViewById(R.id.time);
        out_trade_no = (TextView) itemView.findViewById(R.id.out_trade_no);
        amout = (TextView) itemView.findViewById(R.id.amout);
        today = (TextView) itemView.findViewById(R.id.today);
        payType = (TextView) itemView.findViewById(R.id.payType);
        imageType= (ImageView) itemView.findViewById(R.id.imageType);

        itemView.setOnClickListener(this);
        itemView.setOnLongClickListener(this);

    }

    @Override
    public void onClick(View v) {
        if (listener != null) {
            itemView.setBackgroundResource(R.drawable.recycler_bg);
            listener.setClickListtener(v, getAdapterPosition());
        }
    }

    @Override
    public boolean onLongClick(View v) {
        if (longClickListener != null) {
            itemView.setBackgroundResource(R.drawable.recycler_bg);
            longClickListener.setItemLongClick(v, getAdapterPosition());
        }
        return true;
    }
}
           

DemoAdapter

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

    private static final int NORMAL_ITEM = 0;
    private static final int GROUP_ITEM = 1;

    private Context mContext;
    private List<DemoBean> mDataList;
    private LayoutInflater mLayoutInflater;

    private CustomClickListener listener;

    private CustomItemLongClickListener longClickListener;

    private LinearLayout linearLayout;


    public DemoAdapter(Context mContext, List<DemoBean> mDataList, LinearLayout linearLayout) {
        this.mContext = mContext;
        this.mDataList = mDataList;
        this.linearLayout = linearLayout;
        mLayoutInflater = LayoutInflater.from(mContext);
    }

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

        if (viewType == NORMAL_ITEM) {
            View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.bill_item_view_item, parent, false);
            NormalItemHolder holder = new NormalItemHolder(mContext, itemView, listener, longClickListener);
            return holder;
        } else if (viewType == GROUP_ITEM) {
            View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.bill_item_view_list, parent, false);
            GroupItemHolder holder = new GroupItemHolder(mContext, itemView, listener, longClickListener);
            return holder;
        }
        return null;//
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
        DemoBean entity = mDataList.get(position);

        if (null == entity)
            return;

        if (viewHolder instanceof GroupItemHolder) {
            bindGroupItem(entity, (GroupItemHolder) viewHolder);
        } else {
            NormalItemHolder holder = (NormalItemHolder) viewHolder;
            bindNormalItem(entity, holder.out_trade_no, holder.amout, holder.payType, holder.time, holder.today, holder.imageType);
        }
    }

    @Override
    public int getItemCount() {
        Log.d("mDataList 的長度:", mDataList.size() + "");
//        if (mDataList.size() == 0)
//            linearLayout.setBackgroundResource(R.mipmap.null_record);
//        else
//            linearLayout.setBackgroundResource(0);
        return mDataList.size();
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public int getItemViewType(int position) {
        //第一個要顯示時間
        if (position == 0)
            return GROUP_ITEM;

        String currentDate = mDataList.get(position).getTime();
        int prevIndex = position - 1;
        boolean isDifferent = !mDataList.get(prevIndex).getTime().equals(currentDate);
        return isDifferent ? GROUP_ITEM : NORMAL_ITEM;
    }

    void bindNormalItem(DemoBean entity, TextView out_trade_no, TextView amout, TextView payType, TextView time, TextView today, ImageView imageType) {

        out_trade_no.setText(entity.getOuttradeno());
        amout.setText("¥" + entity.getMoney());
        payType.setText("(" + entity.getPaytype() + ")");
        time.setText(entity.getTimeend());
        today.setText(entity.getTime());

        if (entity.getPaytype().equals("微信支付")) {
            imageType.setBackgroundResource(R.mipmap.pay_icon_weixin);
        } else if (entity.getPaytype().equals("支付寶支付")) {
            imageType.setBackgroundResource(R.mipmap.pay6_normal);
        } else if (entity.getPaytype().equals("QQ支付")) {
            imageType.setBackgroundResource(R.mipmap.pay_qq_default);
        } else {
            imageType.setBackgroundResource(R.mipmap.pay_shuffle);
        }
    }

    void bindGroupItem(DemoBean entity, GroupItemHolder holder) {
        bindNormalItem(entity, holder.out_trade_no, holder.amout, holder.payType, holder.time, holder.today, holder.imageType);
        holder.group_item_time.setText(entity.getTime());
    }

    public void setClickListener(CustomClickListener clickListener) {
        this.listener = clickListener;
    }

    public void setLongClickListener(CustomItemLongClickListener longClickListener) {
        this.longClickListener = longClickListener;
    }
}
           

MainActivity

public class MainActivity extends AppCompatActivity {

    private RecyclerView recyclerView;

    private List<DemoBean> mDataList = new ArrayList<DemoBean>();

    private DemoAdapter mAdapter;
    private List<DemoBean> data;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.bill_main);
        initView();
    }

    private void initView() {
        mDataList = getData();
        mAdapter = new DemoAdapter(this, mDataList, null);
        recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
        LinearLayoutManager manager = new LinearLayoutManager(this);
        recyclerView.setLayoutManager(manager);
        recyclerView.setAdapter(mAdapter);

    }

    private List<DemoBean> getData() {
        for (int i = 0; i < 3; i++) {
            DemoBean bean = new DemoBean();
            bean.setTimeend("2014-12-12 12:45:60");
            bean.setTime("2016-02-02");
            bean.setPaytype("微信支付");
            bean.setMoney("0.02");
            bean.setOuttradeno("P2013123123156");
            mDataList.add(bean);

        }

        for (int i = 0; i < 3; i++) {
            DemoBean bean = new DemoBean();
            bean.setTimeend("2016-02-06 12:45:60");
            bean.setTime("2016-02-06");
            bean.setPaytype("支付寶支付");
            bean.setMoney("0.04");
            bean.setOuttradeno("P2013123123156");
            mDataList.add(0, bean);
        }
        for (int i = 0; i < 3; i++) {
            DemoBean bean = new DemoBean();
            bean.setTimeend("2016-02-06 12:45:60");
            bean.setTime("2016-02-06");
            bean.setPaytype("唐人支付");
            bean.setMoney("0.04");
            bean.setOuttradeno("P2013123123156");
            mDataList.add(0, bean);
        }
        for (int i = 0; i < 3; i++) {
            DemoBean bean = new DemoBean();
            bean.setTimeend("2016-02-08 12:45:60");
            bean.setTime("2016-02-08");
            bean.setPaytype("QQ支付");
            bean.setMoney("0.04");
            bean.setOuttradeno("P2013123123156");
            mDataList.add(0, bean);
        }

        return mDataList;
    }
}
           

下載下傳位址:http://download.csdn.net/detail/wu996489865/9644103