簡體   English   中英

單擊時如何為 ListView 中的項目設置動畫?

[英]How to animate item in ListView when being clicked?

我想要一個 ListView,當我單擊該項目時,視圖會滑出到左側。

所以我有:

listView.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            arg1.startAnimation(openAnimation);
        }
    });

但是,animation 應用於列表中的不同項目,而不是被單擊的項目。 該行為似乎是隨機的,因為有時它同時發生在多個項目上。

正如我懷疑的那樣,這是因為適配器重用它的視圖來創建項目的方式。 我去修改我的適配器中的 getView 方法,以便在每次調用它時擴展新視圖。 然后 animation 不再發生。

有辦法解決這個問題嗎? 我試圖將 animation 移動到我的適配器內部,但我無法將它與 Listview 上的其他操作相關聯。

最終,我希望該項目是可點擊的,但是當向左/向右滑動時會顯示刪除按鈕(iOS 刪除行為)。 我走錯路了嗎? 這應該是可能的,因為 Android 可以實現滑動以在通知欄中刪除。

我建議您也檢查線程。

我不認為,如果不修改您的適配器以適應此類行為,這是不可能的。 據我了解,您在實現識別不同 ListView 行上的滑動手勢的代碼時沒有任何問題,只有 animation 應該在相應的行上遵循此手勢。

我會重寫適配器以適應至少 2 種行類型:普通行和要刪除的行。 在適配器的“getView()”方法中,您應該只重用普通視圖的 convertView。 要刪除的行不應該重復使用它們,這樣動畫一個就不會修改其他的。 單擊普通行后,首先應告知適配器,所單擊的 position 上的行現在屬於待刪除類型,調用 notifyDatasetChanged(),然后在該行上啟動 animation。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM