ใน iOS มีสิ่งอำนวยความสะดวกที่ง่ายและมีประสิทธิภาพในการเคลื่อนไหวเพิ่มและลบแถว UITableView นี่คือคลิปจากวิดีโอ youtube ที่แสดงภาพเคลื่อนไหวเริ่มต้น สังเกตว่าแถวที่ล้อมรอบยุบลงในแถวที่ถูกลบอย่างไร แอนิเมชันนี้ช่วยให้ผู้ใช้ติดตามสิ่งที่เปลี่ยนแปลงในรายการและตำแหน่งที่อยู่ในรายการที่พวกเขาดูเมื่อข้อมูลมีการเปลี่ยนแปลง
ตั้งแต่ผมได้รับการพัฒนาบน Android ฉันได้พบว่าไม่มีสิ่งอำนวยความสะดวกเทียบเท่ากับการเคลื่อนไหวแต่ละแถวในtableView การเรียกใช้ตัวปรับnotifyDataSetChanged()
ต่อของฉันทำให้ ListView อัปเดตเนื้อหาด้วยข้อมูลใหม่ทันที ฉันต้องการแสดงภาพเคลื่อนไหวอย่างง่ายของแถวใหม่ที่ผลักเข้าหรือเลื่อนออกเมื่อข้อมูลมีการเปลี่ยนแปลง แต่ฉันไม่สามารถหาวิธีการทำเอกสารได้ ดูเหมือนว่าLayoutAnimationControllerอาจเก็บกุญแจไว้เพื่อให้มันใช้งานได้ แต่เมื่อฉันตั้งค่า LayoutAnimationController ใน ListView ของฉัน (คล้ายกับLayoutAnimation ApiDemo ของ 2 ) และลบองค์ประกอบออกจากอะแดปเตอร์ของฉันหลังจากที่รายการแสดงองค์ประกอบหายไปทันที .
ฉันได้ลองทำสิ่งต่อไปนี้เพื่อสร้างรายการแต่ละรายการเมื่อมันถูกลบ:
@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);
}
อย่างไรก็ตามแถวรอบแถวภาพเคลื่อนไหวจะไม่ย้ายตำแหน่งจนกว่าจะข้ามไปยังตำแหน่งใหม่เมื่อnotifyDataSetChanged()
มีการเรียก ListView จะไม่อัปเดตโครงร่างเมื่อองค์ประกอบได้ถูกวางไว้
ในขณะที่การเขียนการใช้งาน / แยกของ ListView ของฉันได้ข้ามความคิดของฉันดูเหมือนว่าสิ่งที่ไม่ควรยาก
ขอบคุณ!