Как я могу анимировать действия удаления / вставки в ListView, который заполняется CursorAdapter & CursorLoader? - PullRequest
0 голосов
/ 29 декабря 2018

Я новичок в разработке Android.Я использую ListView в своем приложении, которое заполняется базой данных SQLite с помощью CursorAdapter.И я использую CursorLoader с notifyChange.

. На данный момент ListView обновляется в режиме реального времени новыми данными, когда я удаляю или вставляю новые данные в базу данных.Но я хочу добавить анимацию для элементов для удаления и вставки элементов.

Мне удалось найти анимацию удаления при использовании ArraylistAdapter - DevBytes -> https://www.youtube.com/watch?v=YCHNAi9kJI4 ( DevBytes Code)

Но как применять анимацию при использовании CursorAdapter?

1 Ответ

0 голосов
/ 29 декабря 2018

Я также новичок, но для операции вставки вы должны добавить анимацию к методу 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;
}

для анимации вам необходимо создать файл анимации (xyz.xml) в папке res / anim.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...