便签信息适配器

职责

  • 适配所有便签信息

  • 负责实现ViewHolder的自定义回调接口【因为适配器直接与ViewHolder练习】

  • 负责每项具体显示什么内容,并且在什么组件上显示

组件

  • ArrayList datas;
  • NoteViewHolder.ItemonClick itemonClick;
  • NoteViewHolder.ItemonLongClick itemonLongClick;

package com.hzj163.mysqlitedb.adapter;

import android.support.v7.widget.RecyclerView;
import android.text.format.DateUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.hzj163.mysqlitedb.R;
import com.hzj163.mysqlitedb.beans.Note;
import com.hzj163.mysqlitedb.viewholder.NoteViewHolder;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

/**
 * 作者: 黄志江老师 on 2015/9/21.
 * 网址: www.hzj163.com
 * 网书: https://www.gitbook.com/@hzj163
 * 邮箱: [email protected]
 */

//NodeAdapter具备刷新的能力notifyDataSetChanged();,同时具备局部刷新的能力
public class NodeAdapter extends RecyclerView.Adapter<NoteViewHolder> {

    //绑定的集合
    ArrayList<Note> datas;
    //NoteViewHolder的点击事件,必须由NodeAdapter传递给NoteViewHolder
    NoteViewHolder.ItemonClick itemonClick;
    NoteViewHolder.ItemonLongClick itemonLongClick;

    //构造方法,负责把绑定的集合传递进来,和实现了NoteViewHolder的点击事件对象
    public NodeAdapter(ArrayList<Note> datas, NoteViewHolder.ItemonClick itemonClick, NoteViewHolder.ItemonLongClick itemonLongClick) {

        //传递的集合
        this.datas = datas;
        //传递的NoteViewHolder的点击事件对象
        this.itemonClick = itemonClick;
        //传递的NoteViewHolder的长按事件对象
        this.itemonLongClick = itemonLongClick;
    }

    //创建NoteViewHolder对象,需要获取Item的布局,和NoteViewHolder事件接口对象
    @Override
    public NoteViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {


        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item, parent, false);
        //这里实例化NoteViewHolder对象
        NoteViewHolder noteViewHolder = new NoteViewHolder(view, itemonClick, itemonLongClick);
        return noteViewHolder;
    }

    //绑定数据
    @Override
    public void onBindViewHolder(NoteViewHolder holder, int position) {

        holder.info.setText(datas.get(position).getInfo());

        try {
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date date = simpleDateFormat.parse(datas.get(position).getSt());
            //使用了DateUtils.getRelativeTimeSpanString()方法处理日期,获得相对日期
            String resultTime = DateUtils.getRelativeTimeSpanString(holder.info.getRootView().getContext(), date.getTime()).toString();

            holder.st.setText(resultTime);
        } catch (ParseException e) {
            e.printStackTrace();
            //如果相对日期错误,获得绝对日期
            holder.st.setText(datas.get(position).getSt());
        }
    }
    //绑定数据总数
    @Override
    public int getItemCount() {
        return datas.size();
    }
}