【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;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章