1
這GIF說明了什麼,我試圖完成:Android的平穩過渡刪除
所有ListView的項目,除了被點擊的一個被移除,並平滑過渡到ListView控件的中心,現在大小爲1
的問題是,每當在適配器的ArrayList中的前項目被移除,換句話說,被點擊除了第一任何其他項目時,我得到這種不連續的過渡所在的地方d項目及其文字跳到前面第一個項目的位置轉移前:
final String[] items = {"foo", "bar", "The Quick Brown Fox", "qwerty"};
final ArrayList<String> alItems = new ArrayList<>(Arrays.asList(items));
final ArrayAdapter adapter = new ArrayAdapter<String>(this, R.layout.list_item, R.id.tv1, alItems);
final ViewGroup main = (ViewGroup) findViewById(R.id.main);
final ListView lv = (ListView)findViewById(R.id.theListView);
lv.setAdapter(adapter);
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// Remove all items except for the chosen one
TransitionManager.beginDelayedTransition(main);
alItems.subList(0, position).clear(); // Remove items before clicked item
alItems.subList(1, alItems.size()).clear(); // Remove items after clicked item
adapter.notifyDataSetChanged();
}
});
我懷疑它與ArrayList中越來越設置爲幕後新的ArrayList的事情。沒有跳躍的情況下完成所需效果的好方法是什麼?