RecyclerView删除动画

xiaoxiao2025-10-09  3

package com.example.rapp1016; import android.os.Handler; import android.os.Message; import android.support.annotation.NonNull; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.DefaultItemAnimator; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.StaggeredGridLayoutManager; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private RecyclerView recycler; private List<String>list= new ArrayList<>(); private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (msg.what == 0){ adapterTwo.notifyDataSetChanged(); } } }; private MyAdapterTwo adapterTwo; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); recycler = (RecyclerView) findViewById(R.id.recycler); //设置布局管理器 LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this); linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); GridLayoutManager gridLayoutManager = new GridLayoutManager(this,2); StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL); recycler.setLayoutManager(staggeredGridLayoutManager); adapterTwo = new MyAdapterTwo(this,list); adapter = new MyAdapter(); recycler.setAdapter(adapterTwo); //添加动画 recycler.setItemAnimator(new DefaultItemAnimator()); adapterTwo.setListener(new MyAdapterTwo.onClickItemListener() { @Override public void onItem(int position) { Toast.makeText(MainActivity.this,position+"===",Toast.LENGTH_SHORT).show(); adapterTwo.removeData(position); handler.sendEmptyMessageDelayed(0,1000); } }); for (int i = 0; i <100 ; i++) { list.add(i+"嘻嘻"); list.add(i+"哈哈"); list.add(i+"吼吼"); } } private MyAdapter adapter; private class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder>{ @NonNull @Override public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = View.inflate(MainActivity.this, R.layout.item_layout, null); MyViewHolder holder =new MyViewHolder(view); holder.textView = view.findViewById(R.id.text_view); return holder; } @Override public void onBindViewHolder(@NonNull MyViewHolder holder, int position) { holder.textView.setText(position+"================="); } @Override public int getItemCount() { return 50; } public class MyViewHolder extends RecyclerView.ViewHolder{ public MyViewHolder(View itemView) { super(itemView); } TextView textView; } } } package com.example.rapp1016; import android.content.Context; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; import android.widget.RelativeLayout; import android.widget.TextView; import java.util.List; public class MyAdapterTwo extends RecyclerView.Adapter<MyAdapterTwo.MyViewHolderTwo> { private Context context; private List<String> list; public MyAdapterTwo(Context context, List<String> list) { this.context = context; this.list = list; } @NonNull @Override public MyViewHolderTwo onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View inflate = View.inflate(context, R.layout.item_layout, null); MyViewHolderTwo holdertwo = new MyViewHolderTwo(inflate); holdertwo.textView = inflate.findViewById(R.id.text_view); holdertwo.relativeLayout = inflate.findViewById(R.id.relative); return holdertwo; } @Override public void onBindViewHolder(@NonNull MyViewHolderTwo holder, final int position) { holder.textView.setText(list.get(position)); holder.relativeLayout.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { listener.onItem(position); } }); } @Override public int getItemCount() { return list.size(); } public class MyViewHolderTwo extends RecyclerView.ViewHolder{ public MyViewHolderTwo(View itemView) { super(itemView); } TextView textView; RelativeLayout relativeLayout; } private onClickItemListener listener; public void setListener(onClickItemListener listener) { this.listener = listener; } public interface onClickItemListener{ void onItem(int position); } public void removeData(int postion){ list.remove(postion); notifyItemRemoved(postion); } }

 

转载请注明原文地址: https://www.6miu.com/read-5037638.html

最新回复(0)