| /* |
| * Copyright (C) 2013 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package com.android.uiautomator.tests.cts.testapp; |
| |
| import android.app.Activity; |
| import android.os.Bundle; |
| import android.support.v4.app.ListFragment; |
| import android.view.View; |
| import android.widget.ArrayAdapter; |
| import android.widget.ListView; |
| |
| public class TestListFragment extends ListFragment { |
| |
| private static final String STATE_ACTIVATED_POSITION = "activated_position"; |
| |
| private Callbacks mCallbacks = sDummyCallbacks; |
| private int mActivatedPosition = ListView.INVALID_POSITION; |
| |
| public interface Callbacks { |
| |
| public void onItemSelected(String id); |
| } |
| |
| private static Callbacks sDummyCallbacks = new Callbacks() { |
| @Override |
| public void onItemSelected(String id) { |
| } |
| }; |
| |
| public TestListFragment() { |
| } |
| |
| @Override |
| public void onCreate(Bundle savedInstanceState) { |
| super.onCreate(savedInstanceState); |
| setListAdapter(new ArrayAdapter<TestItems.TestItem>(getActivity(), |
| R.layout.simple_list_item_selected, R.id.label, TestItems.getTests())); |
| } |
| |
| @Override |
| public void onViewCreated(View view, Bundle savedState) { |
| super.onViewCreated(view, savedState); |
| if (savedState != null && savedState.containsKey(STATE_ACTIVATED_POSITION)) { |
| setActivatedPosition(savedState.getInt(STATE_ACTIVATED_POSITION)); |
| } |
| } |
| |
| @Override |
| public void onAttach(Activity activity) { |
| super.onAttach(activity); |
| if (!(activity instanceof Callbacks)) { |
| throw new IllegalStateException("Activity must implement fragment's callbacks."); |
| } |
| |
| mCallbacks = (Callbacks) activity; |
| } |
| |
| @Override |
| public void onDetach() { |
| super.onDetach(); |
| mCallbacks = sDummyCallbacks; |
| } |
| |
| @Override |
| public void onListItemClick(ListView listView, View view, int position, long id) { |
| super.onListItemClick(listView, view, position, id); |
| mCallbacks.onItemSelected(TestItems.getTest(position).mId); |
| } |
| |
| @Override |
| public void onSaveInstanceState(Bundle outState) { |
| super.onSaveInstanceState(outState); |
| if (mActivatedPosition != ListView.INVALID_POSITION) { |
| outState.putInt(STATE_ACTIVATED_POSITION, mActivatedPosition); |
| } |
| } |
| |
| public void setActivateOnItemClick(boolean activateOnItemClick) { |
| getListView().setChoiceMode( |
| activateOnItemClick ? ListView.CHOICE_MODE_SINGLE : ListView.CHOICE_MODE_NONE); |
| } |
| |
| public void setActivatedPosition(int position) { |
| if (position == ListView.INVALID_POSITION) { |
| getListView().setItemChecked(mActivatedPosition, false); |
| } else { |
| getListView().setItemChecked(position, true); |
| } |
| |
| mActivatedPosition = position; |
| } |
| } |