Android中Recyclerview使用2----实现添加删除条目时加动画

来源:互联网 发布:vr全景拼接软件 编辑:程序博客网 时间:2024/05/21 15:23

效果图:


核心代码:

Activity中:
//      添加动画
        mRecyclerView.setItemAnimator(new DefaultItemAnimator());


适配器中:
//  添加数据
    public void addData(int position) {
//      在list中添加数据,并通知条目加入一条
        list.add(position, "Insert One");
        notifyItemInserted(position);
    }
//  删除数据
    public void removeData(int position) {
        list.remove(position);
        notifyItemRemoved(position);
    }

具体代码:

MainActivity中:
<span style="font-size:18px;">/** * 改添加删除条目设置动画 */public class MainActivity extends Activity {    private RecyclerView mRecyclerView;    private Button btnAddItem;    private Button btnDeleteItem;    HomeAdapter honmeAdapter=null;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        btnAddItem = (Button) findViewById(R.id.btnAddItem);        btnDeleteItem = (Button) findViewById(R.id.btnDeleteItem);//      初始化RecyclerView        mRecyclerView = (RecyclerView) findViewById(R.id.id_recyclerview);//        listView纵向滑动样子,纵向滑动        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);        mRecyclerView.setLayoutManager(linearLayoutManager);//      获取数据,向适配器传数据,绑定适配器        ArrayList<String> datas = initData();        honmeAdapter= new HomeAdapter(MainActivity.this, datas);        mRecyclerView.setAdapter(honmeAdapter);//      添加动画        mRecyclerView.setItemAnimator(new DefaultItemAnimator());        myOnClick();    }    private void myOnClick() {        btnAddItem.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {//              添加自带默认动画                honmeAdapter.addData(1);            }        });        btnDeleteItem.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {//               删除自带默认动画                honmeAdapter.removeData(1);            }        });    }    /**     * 编写一套假数据     */    protected ArrayList<String> initData() {        ArrayList<String> mDatas = new ArrayList<String>();        for (int i = 0; i < 100; i++) {            mDatas.add("我是条目" + i);        }        return mDatas;    }}</span>

Recyclerview布局文件:
activity_main.xml

<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    >    <Button        android:id="@+id/btnAddItem"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="添加条目"        />    <Button        android:id="@+id/btnDeleteItem"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:text="删除条目"        />    <android.support.v7.widget.RecyclerView        android:id="@+id/id_recyclerview"        android:layout_width="match_parent"        android:layout_height="match_parent" >    </android.support.v7.widget.RecyclerView></LinearLayout></span>
条目布局文件:
item_home.xml
<?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:background="#44ff0000"    android:layout_height="wrap_content" >    <TextView        android:id="@+id/id_num"        android:layout_width="match_parent"        android:layout_height="50dp"        android:gravity="center"        android:text="1" /></FrameLayout>



适配器:

class HomeAdapter extends RecyclerView.Adapter<HomeAdapter.MyViewHolder> {    private Context context;    private ArrayList<String> list;    public HomeAdapter(Context context, ArrayList<String> list) {        this.context=context;        this.list=list;    }    @Override    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        MyViewHolder holder = new MyViewHolder(LayoutInflater.from(                context).inflate(R.layout.item_home, parent,                false));        return holder;    }    @Override    public void onBindViewHolder(MyViewHolder holder, int position) {        holder.tv.setText(list.get(position));    }    @Override    public int getItemCount() {        return list.size();    }//  添加数据    public void addData(int position) {//      在list中添加数据,并通知条目加入一条        list.add(position, "Insert One");        notifyItemInserted(position);    }//  删除数据    public void removeData(int position) {        list.remove(position);        notifyItemRemoved(position);    }    /**     * ViewHolder的类,用于缓存控件     */    class MyViewHolder extends RecyclerView.ViewHolder {        TextView tv;        public MyViewHolder(View view) {            super(view);            tv = (TextView) view.findViewById(R.id.id_num);        }    }}
源码下载:
MyRecyclerView----recyclerview2
http://download.csdn.net/detail/zhaihaohao1/9572945
参考博客:
http://blog.csdn.net/lmj623565791/article/details/45059587
参考视频:
http://www.imooc.com/learn/424


0 1
原创粉丝点击