便签信息适配器
职责
适配所有便签信息
负责实现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();
}
}