/** * 控件初始化 * */ 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; }