Android---快速索引导航栏(侧滑字母)实践

来源:互联网 发布:informix数据库 使用 编辑:程序博客网 时间:2024/06/02 05:02

大神们的杰作总是吸引着我。

这里写图片描述

这是实现效果的链接

大神写过的我就不写了,然后,既然我们用到这个功能,那就需要和内容list联系起来,并且能实现点击item的效果。大神的代码里,提供的只是静态数据,所以还是需要改一改实体类和adapter。

接下来是快速上手的过程

1.将RightPositionActivity 、 MainActivity、 WaveSideBar的代码和一些图片attr中的数据整合到你的项目,然后在你的xml中写好RecyclerView和WaveSideBar。然后还需要导入jar包

2.创建实体类,获取你的list,然后改一下adapter,到这里你就实现图中的效果了,如果你需要item的点击事件,请往下看。

3.实现点击item效果需要修改adapter和mianactivity的代码就ok。

public class CarModelAdapter extends RecyclerView.Adapter<CarModelAdapter.ContactsViewHolder> {    private List<CarModelBean> carList;    private int layoutId;    public CarModelAdapter(List<CarModelBean> list, int id) {        // TODO Auto-generated constructor stub        this.carList = list;        this.layoutId = id;    }    //修改1    public interface OnItemClickLitener {        void onItemClick(View view, int position);    }    //修改2    private OnItemClickLitener mOnItemClickLitener;    public void setOnItemClickLitener(OnItemClickLitener mOnItemClickLitener) {        this.mOnItemClickLitener = mOnItemClickLitener;    }    @Override    public int getItemCount() {        // TODO Auto-generated method stub        return carList.size();    }    @Override    public void onBindViewHolder(final ContactsViewHolder holder, int position) {        // TODO Auto-generated method stub        CarModelBean car = carList.get(position);        if (position == 0 || !carList.get(position - 1).getGroupName().equals(car.getGroupName())) {            holder.tvIndex.setVisibility(View.VISIBLE);            holder.tvIndex.setText(car.getGroupName());        } else {            holder.tvIndex.setVisibility(View.GONE);        }        holder.tvName.setText(car.getName());        //修改3        if (mOnItemClickLitener != null) {            holder.itemView.setOnClickListener(new OnClickListener() {                @Override                public void onClick(View v) {                    int pos = holder.getLayoutPosition();                    mOnItemClickLitener.onItemClick(holder.itemView, pos);                }            });        }    }    @Override    public ContactsViewHolder onCreateViewHolder(ViewGroup parent, int arg1) {        // TODO Auto-generated method stub        LayoutInflater inflater = LayoutInflater.from(parent.getContext());        View view = inflater.inflate(layoutId, null);        return new ContactsViewHolder(view);    }    class ContactsViewHolder extends RecyclerView.ViewHolder {        public TextView tvIndex;        public ImageView ivAvatar;        public TextView tvName;        public ContactsViewHolder(View itemView) {            super(itemView);            tvIndex = (TextView) itemView.findViewById(R.id.car_model_index);            ivAvatar = (ImageView) itemView.findViewById(R.id.car_model_image);            tvName = (TextView) itemView.findViewById(R.id.car_model_name);        }    }}

4.mianActivity中只要加入就ok了

        carView.setLayoutManager(new LinearLayoutManager(this));        CarModelAdapter adapter = new CarModelAdapter(carList, R.layout.item_car_model);        adapter.setOnItemClickLitener(new OnItemClickLitener() {            @Override            public void onItemClick(View view, int position) {                // TODO Auto-generated method stub                Log.i("00o00", position + "");                Log.i("00o00", carList.get(position).getName() + "");            }        });

不讲原理,只讲过程

0 0
原创粉丝点击