【android记录】RecyclerView的使用

/**
 * 控件初始化
 * */
private void initView(){

    recyclerView=(RecyclerView)findViewById(R.id.recyclerView);

    //添加分割线
    recyclerView.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL));
    //设置布局管理器
    recyclerView.setLayoutManager(new LinearLayoutManager(this));
    //设置item增加和删除时的动画
    recyclerView.setItemAnimator(new DefaultItemAnimator());

    homeAdapter=new HomeAdapter(this,list);


    homeAdapter.setOnItemClickListener(new HomeAdapter.OnIteClickListener() {
        @Override
        public void OnItemClick(View view, int position) {
            Toast.makeText(ViewTestActivity.this, "点击第"+position+"", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void OnItemLongClick(View view, int position) {
            homeAdapter.remmoveData(position);
        }
    });


    recyclerView.setAdapter(homeAdapter);
}

**
 * Created by 123 on 2018/3/1.
 *
 * RecyclerView的适配器
 */

public class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.MyViewHolder> {

    private List<String> mList;
    private Context mContext;

    private OnIteClickListener mOnIteClickListener;

    /**
     * 构造方法
     * */
    public HomeAdapter(Context context,List<String> list){
        mContext=context;
        mList=list;
    }

    /**
     * 删除数据
     * */
    public void remmoveData(int position){
        mList.remove(position);//删除数据
        notifyItemRemoved(position);//更新列表
    }




    @Override
    public HomeAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        MyViewHolder holder=new MyViewHolder(
                LayoutInflater.from(mContext).inflate(R.layout.itme_recycl,parent,false));
        return holder;
    }


    /**
     * 设置列表内容
     *
     * 在这里设置点击事件的监听
     * 并且传递给控件
     * */
    @Override
    public void onBindViewHolder(final MyViewHolder holder, int position) {

        holder.tv_item.setText(mList.get(position));


        if(mOnIteClickListener!=null){

            //textView的点击事件设置
            holder.tv_item.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    int pos=holder.getLayoutPosition();
                    mOnIteClickListener.OnItemClick(holder.tv_item,pos);

                }
            });

            //长按点击事件设置
            holder.tv_item.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    int pos=holder.getLayoutPosition();
                    mOnIteClickListener.OnItemLongClick(holder.tv_item,pos);
                    return false;
                }
            });
        }

    }



    @Override
    public int getItemCount() {
        return mList.size();
    }

    /**
     * 注册控件
     * */
    class MyViewHolder extends RecyclerView.ViewHolder{
        TextView tv_item;
        public MyViewHolder(View view){
            super(view);
            tv_item=(TextView)view.findViewById(R.id.tv_item);
        }
    }



    /**
     * 设置点击接口
     *
     * 需要自定义点击事件
     * */
    public interface OnIteClickListener{
        //点击事件接口,实现它需要实现下面两个方法
        void OnItemClick(View view,int position);
        void OnItemLongClick(View view,int position);
    }

    public void setOnItemClickListener(OnIteClickListener onItemClickListener){
        //设置点击事件的方法
        mOnIteClickListener=onItemClickListener;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章