RecycleView实现时间轴

2017-07-04  本文已影响140人  Y小圆脸

在activity中定义一个RecycleView,主要在adapter和item布局实现类似时间轴效果

timelline_dot_first.xml

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="oval">
        <size
            android:width="10dp"
            android:height="10dp" />
        <solid android:color="#555555" />
    </shape>

定义timelline_dot_normal.xml

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="oval">
    
        <size
            android:width="10dp"
            android:height="10dp" />
        <solid android:color="#999999" />
    </shape>
    public class TraceListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    
        private LayoutInflater inflater;
        private List<Trace> traceList = new ArrayList<>(1);
        private static final int TYPE_TOP = 0x0000;
        private static final int TYPE_NORMAL = 0x0001;
    
    
        public TraceListAdapter(Context context, List<Trace> traceList) {
            inflater = LayoutInflater.from(context);
            this.traceList = traceList;
        }
    
        @Override
        public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            return new ViewHolder(inflater.inflate(R.layout.item_timeline, parent, false));
        }
    
        @Override
        public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
            ViewHolder itemHolder = (ViewHolder) holder;
            if (getItemViewType(position) == TYPE_TOP) {
                // 第一行头的竖线不显示
                itemHolder.tvTopLine.setVisibility(View.INVISIBLE);
                // 字体颜色加深
                itemHolder.tvAcceptTime.setTextColor(0xff555555);
                itemHolder.tvAcceptStation.setTextColor(0xff555555);
                itemHolder.tvDot.setBackgroundResource(R.drawable.timelline_dot_first);
            } else if (getItemViewType(position) == TYPE_NORMAL) {
                itemHolder.tvTopLine.setVisibility(View.VISIBLE);
                itemHolder.tvAcceptTime.setTextColor(0xff999999);
                itemHolder.tvAcceptStation.setTextColor(0xff999999);
                itemHolder.tvDot.setBackgroundResource(R.drawable.timelline_dot_normal);
            }
    
            itemHolder.bindHolder(traceList.get(position));
        }
    
        @Override
        public int getItemViewType(int position) {
            if (position == 0) {
                return TYPE_TOP;
            }
            return TYPE_NORMAL;
        }
    
        @Override
        public int getItemCount() {
            return traceList.size();
        }
        public  class ViewHolder extends RecyclerView.ViewHolder {
            private TextView tvAcceptTime, tvAcceptStation;
            private TextView tvTopLine, tvDot;
            public ViewHolder(View itemView) {
                super(itemView);
                tvAcceptTime = (TextView) itemView.findViewById(R.id.tvAcceptTime);
                tvAcceptStation = (TextView) itemView.findViewById(R.id.tvAcceptStation);
                tvTopLine = (TextView) itemView.findViewById(R.id.tvTopLine);
                tvDot = (TextView) itemView.findViewById(R.id.tvDot);
            }
    
            public void bindHolder(Trace trace) {
                tvAcceptTime.setText(trace.getAcceptTime());
                tvAcceptStation.setText(trace.getAcceptStation());
            }
        }
    }
上一篇 下一篇

猜你喜欢

热点阅读