效果图:
核心代码:
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中:
/**
* 改添加删除条目设置动画
*/
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 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 initData() {
ArrayList mDatas = new ArrayList();
for (int i = 0; i < 100; i++) {
mDatas.add("我是条目" + i);
}
return mDatas;
}
}Recyclerview布局文件:
activity_main.xml
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
android:id="@+id/btnAddItem"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="添加条目"
/>
android:id="@+id/btnDeleteItem"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="删除条目"
/>
android:id="@+id/id_recyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent" >
条目布局文件:
item_home.xml
android:layout_width="match_parent"
android:background="#44ff0000"
android:layout_height="wrap_content" >
android:id="@+id/id_num"
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center"
android:text="1" />
适配器:
class HomeAdapter extends RecyclerView.Adapter {
private Context context;
private ArrayList list;
public HomeAdapter(Context context, ArrayList 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);
}
}
}