【Android 自定义 View】-->单列时间轴(二)

不断学习,做更好的自己!💪

视频号CSDN简书
欢迎打开微信,关注我的视频号:KevinDev点我点我

实例一

02.jpg

第一步: 继承 SingleTimeLineDecoration

/**
 * Created on 2021/7/16 15:44
 *
 * @author Gong Youqiang
 */
public class WeekPlanSTL extends SingleTimeLineDecoration {

    public WeekPlanSTL(Config config) {
        super(config);
    }

    @Override
    protected void onDrawTitleItem(Canvas canvas, int left, int top, int right, int bottom, int pos) {
        ITimeItem item = timeItems.get(pos);

        String title = item.getTitle();
        if (TextUtils.isEmpty(title))
            return;
        Rect mRect = new Rect();
        mTextPaint.setColor(item.getColor());
        mTextPaint.getTextBounds(title, 0, title.length(), mRect);

        int centerX = (left + right) / 2;
        int centerY = (bottom + top) / 2;
        int x, y;
        x = centerX - mRect.width() / 2;
        y = centerY + mRect.height() / 2;
        canvas.drawText(title, x, y, mTextPaint);
    }

    @Override
    protected void onDrawDotResItem(Canvas canvas, int cx, int cy, int radius, Drawable drawable, int pos) {
        super.onDrawDotResItem(canvas, cx, cy, radius, drawable, pos);

        if (drawable != null) {
            int height = drawable.getIntrinsicHeight();
            int width = drawable.getIntrinsicWidth();
            int left = cx - width / 2;
            int top = cy - height / 2;
            int right = cx + width / 2;
            int bottom = cy + height / 2;
            drawable.setBounds(left, top, right, bottom);
            drawable.draw(canvas);
            mDotPaint.setStyle(Paint.Style.STROKE);
            mDotPaint.setColor(Color.parseColor("#ffffff"));
            mDotPaint.setStrokeWidth(DisplayUtils.dip2px(2));
            canvas.drawCircle(cx, cy, width / 2 - DisplayUtils.dip2px(3), mDotPaint);
        }
    }
}

第二步: 创建数据,实现 ITimeItem 接口

/**
 * Created on 2021/7/16 15:07
 *
 * @author Gong Youqiang
 */
public class TimeItem implements ITimeItem {
    private String name;
    private String title;
    private String detail;
    private int color;
    private int res;

    public TimeItem(String name, String title, String detail, int color, int res) {
        this.name = name;
        this.title = title;
        this.detail = detail;
        this.color = color;
        this.res = res;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public void setColor(int color) {
        this.color = color;
    }

    public int getRes() {
        return res;
    }

    public void setRes(int res) {
        this.res = res;
    }

    @Override
    public String getTitle() {
        return title;
    }

    @Override
    public int getColor() {
        return color;
    }

    @Override
    public int getResource() {
        return res;
    }

    public String getDetail() {
        return detail;
    }

    public void setDetail(String detail) {
        this.detail = detail;
    }

    public static List<TimeItem> initTimeInfo(){
        List<TimeItem> items = new ArrayList<>();
        items.add(new TimeItem("喝茶", "10-01,周二", "第一天养养生吧~", Color.parseColor("#f36c60"), R.drawable.timeline_ic_tea));
        items.add(new TimeItem("喝酒", "06-12,周三", "今天找老徐吃烧烤", Color.parseColor("#ab47bc"), R.drawable.timeline_ic_drink));
        items.add(new TimeItem("画画", "07-07,周四", "去鼋头渚写生", Color.parseColor("#aed581"), R.drawable.timeline_ic_draw));
        items.add(new TimeItem("高尔夫", "08-20,周五", "约个高尔夫", Color.parseColor("#5FB29F"), R.drawable.timeline_ic_golf));
        items.add(new TimeItem("游泳", "09-16,周六", "今天来洗个澡", Color.parseColor("#ec407a"), R.drawable.timeline_ic_bath));
        items.add(new TimeItem("温泉", "10-01,周日", "快上班了好好休息", Color.parseColor("#ffd54f"), R.drawable.timeline_ic_footer));
        return items;
    }

}

第三步:创建适配器

/**
 * Created on 2021/7/16 15:25
 *
 * @author Gong Youqiang
 */
public abstract class RecyclerAdapter<Data> extends BaseAdapter<Data> {

    public RecyclerAdapter() {
    }

    public RecyclerAdapter(AdapterListener<Data> adapterListener) {
        super(adapterListener);
    }

    public RecyclerAdapter(List<Data> mDataList, AdapterListener<Data> adapterListener) {
        super(mDataList, adapterListener);
    }

    @Override
    protected void doWithRoot(BaseAdapter.ViewHolder viewHolder, View root) {
        super.doWithRoot(viewHolder, root);

        ((RecyclerAdapter.ViewHolder)viewHolder).unbinder = ButterKnife.bind(viewHolder,root);
    }

    /**
     *  自定义的ViewHolder
     */
    public static abstract class ViewHolder<Data> extends BaseAdapter.ViewHolder<Data>{
        public Unbinder unbinder;

        public ViewHolder(View itemView) {
            super(itemView);
        }
    }

}

第四步:创建时间轴

public class SingleTimeLineActivity extends BaseActivity {
    @BindView(R.id.rv_content)
    RecyclerView mRecyclerView;

    private RecyclerAdapter<TimeItem> mAdapter;


    @Override
    public int getLayoutId() {
        return R.layout.activity_single_time_line;
    }

    @Override
    public void initView() {
        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
        mRecyclerView.setAdapter(mAdapter = new RecyclerAdapter<TimeItem>() {
            @Override
            public ViewHolder<TimeItem> onCreateViewHolder(View root, int viewType) {
                return new WeekPlanViewHolder(root);
            }

            @Override
            public int getItemLayout(TimeItem s, int position) {
                return R.layout.two_side_left_recycle_item;
            }
        });

        List<TimeItem> timeItems = TimeItem.initTimeInfo();
        mAdapter.addAllData(timeItems);

        TimeLine timeLine = provideTimeLine(timeItems);
        mRecyclerView.addItemDecoration(timeLine);
    }



    private TimeLine provideTimeLine(List<TimeItem> timeItems) {
        return new TimeLine.Builder(this, timeItems)
                .setTitle(Color.parseColor("#8d9ca9"), 14)
                .setTitleStyle(TimeLine.FLAG_TITLE_TYPE_LEFT, 100)
                .setLine(TimeLine.FLAG_LINE_BEGIN_TO_END, 40, Color.parseColor("#757575"),1)
                .setDot(TimeLine.FLAG_DOT_RES)
                .build(WeekPlanSTL.class);
    }

    class WeekPlanViewHolder extends RecyclerAdapter.ViewHolder<TimeItem> {

        @BindView(R.id.tv_name)
        TextView mNameTv;

        @BindView(R.id.tv_detail)
        TextView mDetailTv;

        @BindView(R.id.btn_go)
        TextView mGoBtn;

        @BindView(R.id.btn_write)
        TextView mWriteBtn;

        WeekPlanViewHolder(View itemView) {
            super(itemView);
        }

        @Override
        protected void onBind(TimeItem timeItem) {
            mNameTv.setText(timeItem.getName());
            mDetailTv.setText(timeItem.getDetail());

            setColor(timeItem.getColor());
        }

        private void setColor(int color){
            mGoBtn.setBackgroundColor(color);
            mWriteBtn.setBackgroundColor(color);
        }

    }

}

实例二

03.jpg

第一步: 继承 SingleTimeLineDecoration

/**
 * Created on 2021/7/16 15:59
 *
 * @author Gong Youqiang
 */
public class NoteInfoSTL extends SingleTimeLineDecoration {
    private Paint strTextPaint;
    private Paint dayTextPaint;
    private int space;

    public NoteInfoSTL(Config config) {
        super(config);

        strTextPaint = new Paint();
        strTextPaint.setTextSize(DisplayUtils.sp2px(mContext,12));
        strTextPaint.setColor(Color.parseColor("#8d6e63"));

        dayTextPaint = new Paint();
        dayTextPaint.setTextSize(DisplayUtils.sp2px(mContext,20));
        dayTextPaint.setColor(Color.parseColor("#8d6e63"));
        dayTextPaint.setTypeface(Typeface.DEFAULT_BOLD);

        space = DisplayUtils.dip2px(8);
    }

    @Override
    protected void onDrawTitleItem(Canvas canvas, int left, int top, int right, int bottom, int pos) {
        DateInfo timeItem = (DateInfo) timeItems.get(pos);
        Date date = timeItem.getDate();

        if(date != null){
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            String year = Integer.toString(calendar.get(Calendar.YEAR));
            String mon = calendar.get(Calendar.MONTH)<9?"0"+(calendar.get(Calendar.MONTH)+1)
                    :Integer.toString(calendar.get(Calendar.MONTH+1));
            String str = year + "-" +mon;
            int n = calendar.get(Calendar.DAY_OF_MONTH);
            String day = n<10?"0"+n:Integer.toString(n);

            Rect monRect = new Rect();
            strTextPaint.getTextBounds(str,0,str.length(),monRect);
            Rect dayRect = new Rect();
            dayTextPaint.getTextBounds(day,0,day.length(),dayRect);

            int monWidth = monRect.width();
            int monHeight = monRect.height();
            int dayWidth = dayRect.width();
            int dayHeight = dayRect.height();

            int cy = (top + bottom)/2;
            int cx = (left + right)/2;

            int beginY = cy - space/2;
            canvas.drawText(day,cx-dayWidth/2,beginY,dayTextPaint);
            beginY = cy + space/2 + monHeight;
            canvas.drawText(str,cx-monWidth/2,beginY,strTextPaint);
        }
    }

    @Override
    protected void onDrawDotItem(Canvas canvas, int cx, int cy, int radius, int pos) {
        // 不绘制
    }
}

第二步: 创建数据,实现 ITimeItem 接口

/**
 * Created on 2021/7/16 15:56
 *
 * @author Gong Youqiang
 */
public class DateInfo implements ITimeItem {

    private String name;
    private String detail;
    private Date date;
    private int color;

    public DateInfo(String name, String detail, Date date, int color) {
        this.name = name;
        this.detail = detail;
        this.date = date;
        this.color = color;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDetail() {
        return detail;
    }

    public void setDetail(String detail) {
        this.detail = detail;
    }


    public void setColor(int color) {
        this.color = color;
    }

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }

    @Override
    public String getTitle() {
        return null;
    }

    @Override
    public int getColor() {
        return color;
    }

    @Override
    public int getResource() {
        return 0;
    }

    public static List<DateInfo> initDateInfo() {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());
        List<DateInfo> items = new ArrayList<>();
        items.add(new DateInfo("喝茶", "第一天养养生吧~", calendar.getTime(), Color.parseColor("#f36c60")));
        calendar.add(Calendar.DAY_OF_MONTH, 1);
        items.add(new DateInfo("喝酒", "今天找老徐吃烧烤", calendar.getTime(), Color.parseColor("#ab47bc")));
        calendar.add(Calendar.DAY_OF_MONTH, 1);
        items.add(new DateInfo("画画", "去鼋头渚写生", calendar.getTime(), Color.parseColor("#aed581")));
        calendar.add(Calendar.DAY_OF_MONTH, 1);
        items.add(new DateInfo("高尔夫", "约个高尔夫", calendar.getTime(), Color.parseColor("#5FB29F")));
        calendar.add(Calendar.DAY_OF_MONTH, 1);
        items.add(new DateInfo("游泳", "今天来洗个澡", calendar.getTime(), Color.parseColor("#ec407a")));
        calendar.add(Calendar.DAY_OF_MONTH, 1);
        items.add(new DateInfo("温泉", "快上班了好好休息", calendar.getTime(), Color.parseColor("#ffd54f")));
        return items;
    }
}
/**
 * Created on 2021/7/16 15:54
 *
 * @author Gong Youqiang
 */
public class NoteInfo extends DateInfo{
    public static final int NOTE_IMG = 1;
    public static final int NOTE_TEXT = 2;


    private int type;

    public NoteInfo(String name, String detail, Date date, int color, int type) {
        super(name, detail, date, color);

        this.type = type;
    }

    public int getType() {
        return type;
    }

    public void setType(int type) {
        this.type = type;
    }

    @Override
    public String getTitle() {
        return DisplayUtils.date2SDayFormat(getDate());
    }

    public static List<NoteInfo> initNoteInfo(){
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());
        List<NoteInfo> items = new ArrayList<>();
        items.add(new NoteInfo("喝茶", "第一天养养生吧~", calendar.getTime(), Color.parseColor("#f36c60"), NOTE_IMG));
        items.add(new NoteInfo("喝酒", "今天找老徐吃烧烤", calendar.getTime(), Color.parseColor("#ab47bc"), NOTE_TEXT));
        items.add(new NoteInfo("画画", "去鼋头渚写生", calendar.getTime(), Color.parseColor("#aed581"), NOTE_TEXT));
        calendar.add(Calendar.DAY_OF_MONTH, 1);
        items.add(new NoteInfo("高尔夫", "约个高尔夫", calendar.getTime(), Color.parseColor("#5FB29F"),NOTE_IMG ));
        calendar.add(Calendar.DAY_OF_MONTH, 1);
        items.add(new NoteInfo("游泳", "今天来洗个澡", calendar.getTime(), Color.parseColor("#ec407a"), NOTE_TEXT));
        items.add(new NoteInfo("温泉", "快上班了好好休息", calendar.getTime(), Color.parseColor("#0D47A1"), NOTE_TEXT));
        return items;
    }
}

第三步:创建适配器

/**
 * Created on 2021/7/16 15:25
 *
 * @author Gong Youqiang
 */
public abstract class RecyclerAdapter<Data> extends BaseAdapter<Data> {

    public RecyclerAdapter() {
    }

    public RecyclerAdapter(AdapterListener<Data> adapterListener) {
        super(adapterListener);
    }

    public RecyclerAdapter(List<Data> mDataList, AdapterListener<Data> adapterListener) {
        super(mDataList, adapterListener);
    }

    @Override
    protected void doWithRoot(BaseAdapter.ViewHolder viewHolder, View root) {
        super.doWithRoot(viewHolder, root);

        ((RecyclerAdapter.ViewHolder)viewHolder).unbinder = ButterKnife.bind(viewHolder,root);
    }

    /**
     *  自定义的ViewHolder
     */
    public static abstract class ViewHolder<Data> extends BaseAdapter.ViewHolder<Data>{
        public Unbinder unbinder;

        public ViewHolder(View itemView) {
            super(itemView);
        }
    }

}

第四步:创建时间轴

public class SingleInfoActivity extends BaseActivity {
    @BindView(R.id.rv_content)
    RecyclerView mRecyclerView;

    private RecyclerAdapter<NoteInfo> mAdapter;
    @Override
    public int getLayoutId() {
        return R.layout.activity_single_info;
    }

    @Override
    public void initView() {
        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
        mRecyclerView.setAdapter(mAdapter = new RecyclerAdapter<NoteInfo>() {
            @Override
            public ViewHolder<NoteInfo> onCreateViewHolder(View root, int viewType) {
                return new DateInfoHolder(root);
            }

            @Override
            public int getItemLayout(NoteInfo s, int position) {
                if (s.getType() == NoteInfo.NOTE_IMG) {
                    return R.layout.note_info_img_recycle_item;
                }
                return R.layout.note_info_text_recycle_item;

            }
        });

        List<NoteInfo> timeItems = NoteInfo.initNoteInfo();
        mAdapter.addAllData(timeItems);

        TimeLine timeLine = provideTimeLine(timeItems);
        mRecyclerView.addItemDecoration(timeLine);

        
    }

    private TimeLine provideTimeLine(List<NoteInfo> timeItems) {
        return new TimeLine.Builder(this, timeItems)
                .setTitle(Color.parseColor("#ffffff"), 20)
                .setTitleStyle(SingleTimeLineDecoration.FLAG_TITLE_TYPE_LEFT, 80)
                .setLine(SingleTimeLineDecoration.FLAG_LINE_CONSISTENT, 0, Color.parseColor("#00000000"))
                .setDot(SingleTimeLineDecoration.FLAG_DOT_DRAW)
                .setSameTitleHide()
                .build(NoteInfoSTL.class);
    }

    class DateInfoHolder extends RecyclerAdapter.ViewHolder<NoteInfo> {

        @BindView(R.id.tv_name)
        TextView mNameTv;

        @BindView(R.id.tv_detail)
        TextView mDetailTv;

        DateInfoHolder(View itemView) {
            super(itemView);
        }

        @Override
        protected void onBind(NoteInfo timeItem) {
            mNameTv.setText(timeItem.getName());
            mDetailTv.setText(timeItem.getDetail());

        }

    }
}

实例三

02.jpg

第一步: 继承 SingleTimeLineDecoration

/**
 * Created on 2021/7/16 15:44
 *
 * @author Gong Youqiang
 */
/**
 * Created on 2021/7/16 16:20
 *
 * @author Gong Youqiang
 */
public class SocialMediaSTL extends SingleTimeLineDecoration {
    private static final String[] MONTHS = new String[]{
            "/1月", "/2月", "/2月", "/4月", "/5月", "/6月", "/7月", "/8月", "/9月", "/10月", "/11月", "/12月"
    };

    private int r;
    private Paint monTextPaint;
    private Paint dayTextPaint;
    private int space;

    public SocialMediaSTL(Config config) {
        super(config);

        r = DisplayUtils.dip2px(24);
        monTextPaint = new Paint();
        monTextPaint.setTextSize(DisplayUtils.sp2px(mContext, 10));
        monTextPaint.setColor(Color.parseColor("#F5F5F5"));

        dayTextPaint = new Paint();
        dayTextPaint.setTextSize(DisplayUtils.sp2px(mContext, 18));
        dayTextPaint.setColor(Color.parseColor("#ffffff"));

        space = DisplayUtils.dip2px(2);

        mDotPaint.setMaskFilter(new BlurMaskFilter(6, BlurMaskFilter.Blur.SOLID));

        mTextPaint.setTypeface(Typeface.DEFAULT_BOLD);

    }

    @Override
    protected void onDrawTitleItem(Canvas canvas, int left, int top, int right, int bottom, int pos) {
        ITimeItem item = timeItems.get(pos);

        int rectWidth = DisplayUtils.dip2px(20);
        int mid = (bottom + top) / 2;

        String title = item.getTitle();
        if (TextUtils.isEmpty(title))
            return;
        Rect mRect = new Rect();

        mTextPaint.getTextBounds(title, 0, title.length(), mRect);
        int x = left + rectWidth;
        //int x = left + UIUtils.dip2px(20);
        int y = mid + mRect.height() / 2;
        canvas.drawText(title, x, y, mTextPaint);
    }


    @Override
    protected void onDrawDotItem(Canvas canvas, int cx, int cy, int radius, int pos) {
        super.onDrawDotItem(canvas, cx, cy, radius, pos);

        DateInfo timeItem = (DateInfo) timeItems.get(pos);
        Date date = timeItem.getDate();
        mDotPaint.setColor(timeItem.getColor());
        canvas.drawRoundRect(cx - r, cy - r, cx + r, cy + r
                , DisplayUtils.dip2px(2),DisplayUtils.dip2px(2),mDotPaint);

        if (date != null) {
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            String mon = MONTHS[calendar.get(Calendar.MONTH)];
            int n = calendar.get(Calendar.DAY_OF_MONTH);
            String day = n < 10 ? "0" + n : Integer.toString(n);

            Rect monRect = new Rect();
            monTextPaint.getTextBounds(mon, 0, mon.length(), monRect);
            Rect dayRect = new Rect();
            dayTextPaint.getTextBounds(day, 0, day.length(), dayRect);

            int monWidth = monRect.width();
            int dayWidth = dayRect.width();
            int dayHeight = dayRect.height();

            int beginY = cy + r - (r * 2 -dayHeight) / 2;
            int beginX = cx - r +(r *2 - monWidth -space -  dayWidth)/2;
            canvas.drawText(day, beginX, beginY, dayTextPaint);
            beginX += space+dayWidth;
            canvas.drawText(mon, beginX, beginY, monTextPaint);
        }
    }
}

第二步: 创建数据,实现 ITimeItem 接口

/**
 * Created on 2021/7/16 16:18
 *
 * @author Gong Youqiang
 */
public class SocialMediaInfo extends DateInfo {
    private int res;

    public SocialMediaInfo(String name, String detail, Date date, int color,int res) {
        super(name, detail, date, color);
        this.res = res;
    }

    @Override
    public String getTitle() {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(getDate());
        return Integer.toString(calendar.get(Calendar.YEAR));
    }

    public int getRes() {
        return res;
    }

    public void setRes(int res) {
        this.res = res;
    }

    public static List<SocialMediaInfo> initSocialMediaInfo(){
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(new Date());
        List<SocialMediaInfo> items = new ArrayList<>();

        for (int i = 0; i < 2; i++) {
            items.add(new SocialMediaInfo("傍晚的太湖", "", calendar.getTime(), Color.parseColor("#f36c60"), R.mipmap.image2));

            calendar.add(Calendar.DAY_OF_MONTH, -1);
            items.add(new SocialMediaInfo("最近真的是种了简书和掘金的毒,偷偷学习了它们的风格", "共2张"
                    , calendar.getTime(), Color.parseColor("#ab47bc"), R.mipmap.image1));
            calendar.add(Calendar.DAY_OF_MONTH, -1);
            items.add(new SocialMediaInfo("出差啦~", "共3张", calendar.getTime(), Color.parseColor("#aed581"), R.mipmap.image3));

            calendar.add(Calendar.YEAR, -1);
            calendar.add(Calendar.DAY_OF_MONTH, -1);
            items.add(new SocialMediaInfo("Hey,故宫", "", calendar.getTime(), Color.parseColor("#5FB29F"), R.mipmap.image1));
            calendar.add(Calendar.DAY_OF_MONTH, -1);
            items.add(new SocialMediaInfo("吃个布丁", "", calendar.getTime(), Color.parseColor("#ec407a"), R.mipmap.image4));
            calendar.add(Calendar.DAY_OF_MONTH, -1);
            items.add(new SocialMediaInfo("夏天到啦啦啦,2333333", "共2张", calendar.getTime(), Color.parseColor("#0D47A1"), R.mipmap.image1));
        }
        return items;
    }
}

第三步:创建适配器

/**
 * Created on 2021/7/16 15:25
 *
 * @author Gong Youqiang
 */
public abstract class RecyclerAdapter<Data> extends BaseAdapter<Data> {

    public RecyclerAdapter() {
    }

    public RecyclerAdapter(AdapterListener<Data> adapterListener) {
        super(adapterListener);
    }

    public RecyclerAdapter(List<Data> mDataList, AdapterListener<Data> adapterListener) {
        super(mDataList, adapterListener);
    }

    @Override
    protected void doWithRoot(BaseAdapter.ViewHolder viewHolder, View root) {
        super.doWithRoot(viewHolder, root);

        ((RecyclerAdapter.ViewHolder)viewHolder).unbinder = ButterKnife.bind(viewHolder,root);
    }

    /**
     *  自定义的ViewHolder
     */
    public static abstract class ViewHolder<Data> extends BaseAdapter.ViewHolder<Data>{
        public Unbinder unbinder;

        public ViewHolder(View itemView) {
            super(itemView);
        }
    }

}

第四步:创建时间轴

public class SingleInfoActivity extends BaseActivity {
    @BindView(R.id.rv_content)
    RecyclerView mRecyclerView;

    private RecyclerAdapter<SocialMediaInfo> mAdapter;
    @Override
    public int getLayoutId() {
        return R.layout.activity_single_info;
    }

    @Override
    public void initView() {


        mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
        mRecyclerView.setAdapter(mAdapter = new RecyclerAdapter<SocialMediaInfo>() {
            @Override
            public ViewHolder<SocialMediaInfo> onCreateViewHolder(View root, int viewType) {
                return new DateInfoHolder(root);
            }

            @Override
            public int getItemLayout(SocialMediaInfo s, int position) {
                return R.layout.social_meida_recycle_item;
            }
        });

        List<SocialMediaInfo> timeItems = SocialMediaInfo.initSocialMediaInfo();
        mAdapter.addAllData(timeItems);

        TimeLine timeLine = provideTimeLine(timeItems);
        mRecyclerView.addItemDecoration(timeLine);
    }


    private TimeLine provideTimeLine(List<SocialMediaInfo> timeItems) {
        return new TimeLine.Builder(this, timeItems)
                .setTitleStyle(TimeLine.FLAG_TITLE_TYPE_TOP, 52)
                .setTitle(Color.parseColor("#000000"), 22)
                .setLine(TimeLine.FLAG_LINE_DIVIDE, 80, Color.parseColor("#757575"), 1)
                .setDot(TimeLine.FLAG_DOT_DRAW)
                .setSameTitleHide()
                .build(SocialMediaSTL.class);
    }

    class DateInfoHolder extends RecyclerAdapter.ViewHolder<SocialMediaInfo> {

        @BindView(R.id.tv_name)
        TextView mNameTv;

        @BindView(R.id.tv_detail)
        TextView mDetailTv;

        @BindView(R.id.iv_content)
        ImageView mContentIv;

        DateInfoHolder(View itemView) {
            super(itemView);
        }

        @Override
        protected void onBind(SocialMediaInfo timeItem) {
            mNameTv.setText(timeItem.getName());
            mDetailTv.setText(timeItem.getDetail());
            mContentIv.setImageResource(timeItem.getRes());
        }

    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kevin-Dev

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值