FileDocCategorySizeDatePackage
ListViewAddRemove.javaAPI DocAndroid 5.1 API6462Thu Mar 12 22:22:44 GMT 2015com.android.transitiontests

ListViewAddRemove

public class ListViewAddRemove extends android.app.Activity

Fields Summary
final ArrayList
numList
String
mItemToDelete
Constructors Summary
Methods Summary
public voidonCreate(android.os.Bundle savedInstanceState)


    
        
        super.onCreate(savedInstanceState);
        setContentView(R.layout.list_view_add_remove);

        final LinearLayout container = (LinearLayout) findViewById(R.id.container);

        final ListView listview = (ListView) findViewById(R.id.listview);
        for (int i = 0; i < 200; ++i) {
            numList.add(Integer.toString(i));
        }
        final StableArrayAdapter adapter = new StableArrayAdapter(this,
                android.R.layout.simple_list_item_1, numList);
        listview.setAdapter(adapter);

        final ViewTreeObserver observer = container.getViewTreeObserver();
        observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            public void onGlobalLayout() {
                System.out.println("-------------------------------------");
                System.out.println("onLayoutListener: listview view tops: ");
                for (int i = 0; i < listview.getChildCount(); ++i) {
                    TextView view = (TextView) listview.getChildAt(i);
                    System.out.println("    " + view.getText() + ": " + view.getTop());
                }
            }
        });

        final Scene mySceneChanger = new Scene(listview);

        mySceneChanger.setEnterAction(new Runnable() {
            @Override
            public void run() {
                numList.remove(mItemToDelete);
                adapter.notifyDataSetChanged();
            }
        });
        final Transition myTransition = new AutoTransition();
        final TransitionSet noFadeIn = new TransitionSet().
                setOrdering(TransitionSet.ORDERING_SEQUENTIAL);
        Fade fadeIn = new Fade(Fade.IN);
        fadeIn.setDuration(50);
        noFadeIn.addTransition(new Fade(Fade.OUT)).addTransition(new ChangeBounds()).addTransition(fadeIn);

        myTransition.addListener(new Transition.TransitionListenerAdapter() {
            @Override
            public void onTransitionStart(Transition transition) {
                System.out.println("---------ListView Tops: Before--------");
                for (int i = 0; i < listview.getChildCount(); ++i) {
                    TextView view = (TextView) listview.getChildAt(i);
                    int position = listview.getPositionForView(view);
                }
            }

            @Override
            public void onTransitionEnd(Transition transition) {
                System.out.println("---------ListView Tops: After--------");
                for (int i = 0; i < listview.getChildCount(); ++i) {
                    TextView view = (TextView) listview.getChildAt(i);
                    int position = listview.getPositionForView(view);
                    if (view.hasTransientState()) {
//                        view.setHasTransientState(false);
                    }
                }
                myTransition.removeListener(this);
            }
        });

        listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, final View view, int position, long id) {
                System.out.println("---------ListView Tops: OnClick--------");
                String item = (String) parent.getItemAtPosition(position);
                for (int i = 0; i < listview.getChildCount(); ++i) {
                    TextView v = (TextView) listview.getChildAt(i);
                    if (!item.equals(v.getText())) {
//                        v.setHasTransientState(true);
                    }
                }
//                listview.setHasTransientState(true);
                mItemToDelete = item;
//                numList.remove(item);
                TransitionManager.go(mySceneChanger, noFadeIn);
//                view.postDelayed(new Runnable() {
//                    @Override
//                    public void run() {
//                        for (int i = 0; i < listview.getChildCount(); ++i) {
//                            TextView v = (TextView) listview.getChildAt(i);
//                            v.setHasTransientState(false);
//                        }
//                    }
//                }, 200);
            }

        });