public class MainActivity extends AppCompatActivity { private RecyclerView rv; private List<String> list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); rv = (RecyclerView) findViewById(R.id.rv); initRV(); } private void initRV() { // 1.初始化數據 initData(); // 2.創建佈局管理器 LinearLayoutManager manger = new LinearLayoutManager(this); rv.setLayoutManager(manger); // 3.設置適配器 final MyRVAdapter1 adapter1 = new MyRVAdapter1(); // 4.關聯綁定數據 rv.setAdapter(adapter1); // 設置動畫 rv.setItemAnimator(new DefaultItemAnimator()); // 系統自帶的橫線 rv.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL)); // adapter.setOnItemClickListener(new OnItemClickListener() { // @Override // public void onItemClick(View view, int position) { // list.remove(position); // adapter.notifyDataSetChanged(); // Toast.makeText(MainActivity.this,"已刪除:"+position,Toast.LENGTH_SHORT).show(); // } // }); adapter1.setOnItemClickListener1(new OnItemClickListener1() { @Override public void onItemClick1(View view, int position) { list.remove(position); adapter1.notifyDataSetChanged(); Toast.makeText(MainActivity.this, "已刪除" + position, Toast.LENGTH_SHORT).show(); } }); // 添加頭部 TextView tv = new TextView(this); tv.setText("啦啦啦"); adapter1.addHeader(tv); } private void initData() { list = new ArrayList<>(); for (int i = 0; i < 20; i++) { list.add("哦" + i); } } // RecyclerView 簡單實現——接口回調點擊刪除 class MyRVAdapter extends RecyclerView.Adapter<MyRVAdapter.MyViewHolder> { OnItemClickListener listener; public void setOnItemClickListener(OnItemClickListener listener) { this.listener = listener; } @Override public MyRVAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { // View view = View.inflate(MainActivity.this,R.layout.one_item,null); // item條目佈局充滿 View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.one_item, parent, false); MyViewHolder holder = new MyViewHolder(view); view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { listener.onItemClick(view, (Integer) view.getTag()); } }); return holder; } @Override public void onBindViewHolder(MyRVAdapter.MyViewHolder holder, int position) { holder.tv.setText(list.get(position)); holder.itemView.setTag(position); } @Override public int getItemCount() { return list == null ? 0 : list.size(); } class MyViewHolder extends RecyclerView.ViewHolder { TextView tv; public MyViewHolder(View itemView) { super(itemView); tv = itemView.findViewById(R.id.tv); } } } public interface OnItemClickListener { void onItemClick(View view, int position); } // RecyclerView 多條目加載——添加頭佈局——接口回調點擊刪除 class MyRVAdapter1 extends RecyclerView.Adapter<RecyclerView.ViewHolder> { public static final int TYPE_HEADER = 0; public static final int TYPE_ONE = 1; public static final int TYPE_TWO = 2; List<View> listHeader = new ArrayList<>(); public void addHeader(View view){ listHeader.add(view); } OnItemClickListener1 listener1; public void setOnItemClickListener1(OnItemClickListener1 listener1) { this.listener1 = listener1; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if (viewType == TYPE_HEADER) { View view = View.inflate(MainActivity.this, R.layout.header_item, null); MyHeaderHolder headerHolder = new MyHeaderHolder(view); return headerHolder; } else if (viewType == TYPE_ONE) { View view = View.inflate(MainActivity.this, R.layout.one_item, null); MyViewHolder holder = new MyViewHolder(view); view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { listener1.onItemClick1(view, (Integer) view.getTag()); } }); return holder; } else { View view = View.inflate(MainActivity.this, R.layout.twoitem, null); MyViewHolder1 holder1 = new MyViewHolder1(view); view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { listener1.onItemClick1(view, (Integer) view.getTag()); } }); return holder1; } } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { if(holder instanceof MyHeaderHolder){ ((MyHeaderHolder) holder).ll.removeView(listHeader.get(position)); ((MyHeaderHolder) holder).ll.addView(listHeader.get(position)); } if (holder instanceof MyViewHolder) { ((MyViewHolder) holder).tv.setText(list.get(position)); holder.itemView.setTag(position); } if (holder instanceof MyViewHolder1) { ((MyViewHolder1) holder).tv.setText(list.get(position)); holder.itemView.setTag(position); } } @Override public int getItemCount() { return list == null ? 0 : list.size(); } @Override public int getItemViewType(int position) { if(position < listHeader.size()){ return TYPE_HEADER; }else if (position % 2 == 0) { return TYPE_ONE; } else { return TYPE_TWO; } } class MyHeaderHolder extends RecyclerView.ViewHolder { LinearLayout ll; public MyHeaderHolder(View itemView) { super(itemView); ll = itemView.findViewById(R.id.ll); } } class MyViewHolder extends RecyclerView.ViewHolder { TextView tv; public MyViewHolder(View itemView) { super(itemView); tv = itemView.findViewById(R.id.tv); } } class MyViewHolder1 extends RecyclerView.ViewHolder { TextView tv; ImageView iv; public MyViewHolder1(View itemView) { super(itemView); tv = itemView.findViewById(R.id.tv); iv = itemView.findViewById(R.id.iv); } } } public interface OnItemClickListener1 { void onItemClick1(View view, int position); } }
RecyclerView_多條目---點擊事件
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.