Di iOS, ada fasilitas yang sangat mudah dan kuat untuk menganimasikan penambahan dan penghapusan baris UITableView, inilah klip dari video youtube yang menunjukkan animasi default. Perhatikan bagaimana baris di sekitarnya runtuh ke baris yang dihapus. Animasi ini membantu pengguna melacak apa yang berubah dalam daftar dan di mana dalam daftar yang mereka lihat ketika data berubah.
Karena saya telah mengembangkan di Android, saya tidak menemukan fasilitas yang setara untuk menghidupkan setiap baris di TableView . Memanggil notifyDataSetChanged()
Adaptor saya menyebabkan ListView segera memperbarui kontennya dengan informasi baru. Saya ingin menunjukkan animasi sederhana dari baris baru yang mendorong atau meluncur ketika data berubah, tetapi saya tidak dapat menemukan cara yang terdokumentasi untuk melakukan ini. Sepertinya LayoutAnimationController mungkin memegang kunci untuk membuat ini berfungsi, tetapi ketika saya mengatur LayoutAnimationController pada ListView saya (mirip dengan LayoutAnimation2 ApiDemo ) dan menghapus elemen dari adaptor saya setelah daftar ditampilkan, elemen-elemen menghilang segera alih-alih menjadi animasi keluar .
Saya juga sudah mencoba hal-hal seperti berikut ini untuk menghidupkan barang individual ketika dihapus:
@Override
protected void onListItemClick(ListView l, View v, final int position, long id) {
Animation animation = new ScaleAnimation(1, 1, 1, 0);
animation.setDuration(100);
getListView().getChildAt(position).startAnimation(animation);
l.postDelayed(new Runnable() {
public void run() {
mStringList.remove(position);
mAdapter.notifyDataSetChanged();
}
}, 100);
}
Namun, baris yang mengelilingi baris animasi tidak bergerak posisi sampai mereka melompat ke posisi baru ketika notifyDataSetChanged()
dipanggil. Tampaknya ListView tidak memperbarui tata letaknya setelah elemen-elemennya ditempatkan.
Saat menulis implementasi saya sendiri / garpu ListView telah terlintas di benak saya, ini sepertinya sesuatu yang seharusnya tidak terlalu sulit.
Terima kasih!