我是一个Android开发的初学者。我在我的应用程序中使用了一个ListView,它是在CursorAdapter的帮助下由SQLite数据库填充的。我在notifyChange中使用CursorLoader。
现在,当我在数据库中删除或插入新数据时,ListView会用新数据实时更新。但我想为删除和插入项目添加动画。
在使用ArraylistAdapter - DevBytes -> https://www.youtube.com/watch?v=YCHNAi9kJI4 (DevBytes Code)时,我能够找到删除动画
但是如何在使用CursorAdapter时应用动画
发布于 2018-12-30 01:23:58
我也是一个初学者,但是对于插入操作,当列表第一次加载时,你必须在oncreate()方法中添加动画。在此处输入代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView lv = (ListView) findViewById(R.id.listView);
List<ItemDetail> itemList = createItems(50);
// Load animation
final Animation anim = AnimationUtils.loadAnimation(this, R.anim.fade_anim);
// Find ListView to populate
ListView lv = (ListView) findViewById(R.id.lvItems);
// Setup cursor adapter using cursor from last step
TodoCursorAdapter todoAdapter = new TodoCursorAdapter(this, todoCursor);
// Attach cursor adapter to the ListView
lv.setAdapter(todoAdapter);
lv.setAdapter(aAdpt);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, final View view, final int position,
long id) {
anim.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
view.setHasTransientState(true);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
ItemDetail item = aAdpt.getItem(position);
aAdpt.remove(item);
view.setHasTransientState(false);
}
});
view.startAnimation(anim);
}
});
}
private List<ItemDetail> createItems(int size) {
List<ItemDetail> result = new ArrayList<ItemDetail>();
for (int i=0; i < size; i++) {
ItemDetail item = new ItemDetail(i, "Item " + i);
result.add(item);
}
return result;
}对于动画,您必须在res/anim文件夹下创建动画文件(xyz.xml)。
https://stackoverflow.com/questions/53971199
复制相似问题