BiDiTestActivity.java revision 7af05226b901f2b623ca5b3ca23d8586941ef54b
19f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio/* 29f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio * Copyright (C) 2011 The Android Open Source Project 39f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio * 49f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio * Licensed under the Apache License, Version 2.0 (the "License"); 59f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio * you may not use this file except in compliance with the License. 69f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio * You may obtain a copy of the License at 79f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio * 89f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio * http://www.apache.org/licenses/LICENSE-2.0 99f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio * 109f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio * Unless required by applicable law or agreed to in writing, software 119f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio * distributed under the License is distributed on an "AS IS" BASIS, 129f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio * See the License for the specific language governing permissions and 149f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio * limitations under the License. 159f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio */ 169f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio 179f82b580d744ce4baf057b061994394dcf239eedFabrice Di Megliopackage com.android.bidi; 189f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio 197af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglioimport java.util.ArrayList; 207af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglioimport java.util.HashMap; 217af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglioimport java.util.List; 227af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglioimport java.util.Map; 237af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio 247af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglioimport android.app.Activity; 257af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglioimport android.app.Fragment; 267af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglioimport android.app.FragmentTransaction; 279f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglioimport android.os.Bundle; 287af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglioimport android.view.View; 297af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglioimport android.widget.AdapterView; 307af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglioimport android.widget.ListView; 317af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglioimport android.widget.SimpleAdapter; 327af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio 337af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Megliopublic class BiDiTestActivity extends Activity { 347af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio 357af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio private static final String KEY_CLASS = "class"; 367af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio private static final String KEY_TITLE = "title"; 377af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio private static final String KEY_FRAGMENT_ID = "id"; 387af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio 397af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio private ListView mList; 407af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio 417af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio private AdapterView.OnItemClickListener mOnClickListener = 427af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio new AdapterView.OnItemClickListener() { 437af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 447af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio onListItemClick((ListView)parent, v, position, id); 457af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio } 467af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio }; 477af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio 487af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio private void onListItemClick(ListView lv, View v, int position, long id) { 497af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio // Show the test 507af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio Map<String, Object> map = (Map<String, Object>)lv.getItemAtPosition(position); 517af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio int fragmentId = (Integer) map.get(KEY_FRAGMENT_ID); 527af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio Fragment fragment = getFragmentManager().findFragmentById(fragmentId); 537af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio if (fragment == null) { 547af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio try { 557af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio // Create an instance of the test 567af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio Class<? extends Fragment> clazz = (Class<? extends Fragment>) map.get(KEY_CLASS); 577af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio fragment = clazz.newInstance(); 587af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio 597af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio // Replace the old test fragment with the new one 607af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio FragmentTransaction ft = getFragmentManager().beginTransaction(); 617af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio ft.replace(R.id.testframe, fragment); 627af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); 637af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio ft.commit(); 647af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio } catch (InstantiationException e) { 657af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio } catch (IllegalAccessException e) { 667af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio } 677af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio } 687af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio } 69eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio 709f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio @Override 719f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio protected void onCreate(Bundle savedInstanceState) { 729f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio super.onCreate(savedInstanceState); 739f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio 741e4cfbeba54898373c852097d1519a1d966c0854Fabrice Di Meglio setContentView(R.layout.main); 75eee49c699c035ffba188417489f40d34f587d65cFabrice Di Meglio 767af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio mList = (ListView) findViewById(R.id.testlist); 777af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio mList.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 787af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio mList.setFocusableInTouchMode(true); 797af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio 807af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio final SimpleAdapter adapter = new SimpleAdapter(this, getTests(), 817af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio R.layout.custom_list_item, new String[]{"title"}, 827af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio new int[]{android.R.id.text1}); 837af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio mList.setAdapter(adapter); 847af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio 857af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio mList.setOnItemClickListener(mOnClickListener); 867af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio } 8788f9fd2316d764e792a84c43aef67816ac02ef14Fabrice Di Meglio 887af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio private void addItem(List<Map<String, Object>> data, String name, 897af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio Class<? extends Fragment> clazz, int fragmentId) { 907af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio Map<String, Object> temp = new HashMap<String, Object>(); 917af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio temp.put(KEY_TITLE, name); 927af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio temp.put(KEY_CLASS, clazz); 937af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio temp.put(KEY_FRAGMENT_ID, fragmentId); 947af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio data.add(temp); 957af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio } 9626e432d25f2ba199ae8b762fc68da8463389dd9bFabrice Di Meglio 977af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio private List<Map<String, Object>> getTests() { 987af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio List<Map<String, Object>> result = new ArrayList<Map<String, Object>>(); 997af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio 1007af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio addItem(result, "Basic", BiDiTestBasic.class, R.id.basic); 1017af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio addItem(result, "Canvas", BiDiTestCanvas.class, R.id.canvas); 1027af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio 1037af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio addItem(result, "Linear LTR", BiDiTestLinearLayoutLtr.class, R.id.linear_layout_ltr); 1047af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio addItem(result, "Linear RTL", BiDiTestLinearLayoutRtl.class, R.id.linear_layout_rtl); 1057af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio addItem(result, "Linear LOC", BiDiTestLinearLayoutLocale.class, R.id.linear_layout_locale); 1067af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio 1077af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio addItem(result, "Frame LTR", BiDiTestFrameLayoutLtr.class, R.id.frame_layout_ltr); 1087af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio addItem(result, "Frame RTL", BiDiTestFrameLayoutRtl.class, R.id.frame_layout_rtl); 1097af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio addItem(result, "Frame LOC", BiDiTestFrameLayoutLocale.class, R.id.frame_layout_locale); 1107af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio 1117af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio addItem(result, "Relative LTR", BiDiTestRelativeLayoutLtr.class, R.id.relative_layout_ltr); 1127af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio addItem(result, "Relative RTL", BiDiTestRelativeLayoutRtl.class, R.id.relative_layout_rtl); 1137af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio 1147af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio addItem(result, "Relative2 LTR", BiDiTestRelativeLayout2Ltr.class, R.id.relative_layout_2_ltr); 1157af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio addItem(result, "Relative2 RTL", BiDiTestRelativeLayout2Rtl.class, R.id.relative_layout_2_rtl); 1167af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio addItem(result, "Relative2 LOC", BiDiTestRelativeLayout2Locale.class, R.id.relative_layout_2_locale); 1177af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio 1187af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio addItem(result, "Table LTR", BiDiTestTableLayoutLtr.class, R.id.table_layout_ltr); 1197af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio addItem(result, "Table RTL", BiDiTestTableLayoutRtl.class, R.id.table_layout_rtl); 1207af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio addItem(result, "Table LOC", BiDiTestTableLayoutLocale.class, R.id.table_layout_locale); 1217af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio 1227af05226b901f2b623ca5b3ca23d8586941ef54bFabrice Di Meglio return result; 1239f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio } 1249f82b580d744ce4baf057b061994394dcf239eedFabrice Di Meglio}