BaseBrowserActivity.java 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. package com.poqop.document;
  2. import android.app.Activity;
  3. import android.net.Uri;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.view.ViewGroup;
  7. import android.widget.AdapterView;
  8. import android.widget.FrameLayout;
  9. import android.widget.ListView;
  10. import android.widget.TabHost;
  11. import com.poqop.R;
  12. import com.poqop.document.presentation.BrowserAdapter;
  13. import com.poqop.document.presentation.UriBrowserAdapter;
  14. import java.io.File;
  15. import java.io.FileFilter;
  16. /**
  17. * 生成两个listview去填充tabHost
  18. * @author Administrator
  19. *
  20. */
  21. public abstract class BaseBrowserActivity extends Activity
  22. {
  23. private BrowserAdapter adapter;
  24. private static final String CURRENT_DIRECTORY = "currentDirectory";
  25. private final AdapterView.OnItemClickListener onItemClickListener = new AdapterView.OnItemClickListener()
  26. {
  27. @SuppressWarnings({"unchecked"})
  28. public void onItemClick(AdapterView<?> adapterView, View view, int i, long l)
  29. {
  30. final File file = ((AdapterView<BrowserAdapter>)adapterView).getAdapter().getItem(i);
  31. if (file.isDirectory())
  32. {
  33. setCurrentDir(file);
  34. }
  35. else
  36. {
  37. showDocument(file);
  38. }
  39. }
  40. };
  41. private UriBrowserAdapter recentAdapter;
  42. private ViewerPreferences viewerPreferences;
  43. protected final FileFilter filter;
  44. public BaseBrowserActivity()
  45. {
  46. this.filter = createFileFilter();
  47. }
  48. protected abstract FileFilter createFileFilter();
  49. @Override
  50. public void onCreate(Bundle savedInstanceState)
  51. {
  52. super.onCreate(savedInstanceState);
  53. setContentView(R.layout.browser);
  54. viewerPreferences = new ViewerPreferences(this);
  55. final ListView browseList = initBrowserListView(); //这个listview:是显示文件夹和文件
  56. final ListView recentListView = initRecentListView(); //这个listview:是显示最近浏览的文件
  57. TabHost tabHost = (TabHost) findViewById(R.id.browserTabHost);
  58. tabHost.setup();
  59. //选项卡Browse
  60. tabHost.addTab(tabHost.newTabSpec("Browse").setIndicator("Browse").setContent(new TabHost.TabContentFactory()
  61. {
  62. public View createTabContent(String s)
  63. {
  64. return browseList;
  65. }
  66. }));
  67. //选项卡 Recent
  68. tabHost.addTab(tabHost.newTabSpec("Recent").setIndicator("Recent").setContent(new TabHost.TabContentFactory()
  69. {
  70. public View createTabContent(String s)
  71. {
  72. return recentListView;
  73. }
  74. }));
  75. }
  76. @Override
  77. protected void onPostCreate(Bundle savedInstanceState)
  78. {
  79. super.onPostCreate(savedInstanceState);
  80. final File sdcardPath = new File("/sdcard");
  81. if (sdcardPath.exists())
  82. {
  83. setCurrentDir(sdcardPath);
  84. }
  85. else
  86. {
  87. setCurrentDir(new File("/"));
  88. }
  89. if (savedInstanceState != null)
  90. {
  91. final String absolutePath = savedInstanceState.getString(CURRENT_DIRECTORY);
  92. if (absolutePath != null)
  93. {
  94. setCurrentDir(new File(absolutePath));
  95. }
  96. }
  97. }
  98. private ListView initBrowserListView()
  99. {
  100. final ListView listView = new ListView(this);
  101. adapter = new BrowserAdapter(this, filter);
  102. listView.setAdapter(adapter);
  103. listView.setOnItemClickListener(onItemClickListener);
  104. listView.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT));
  105. return listView;
  106. }
  107. private ListView initRecentListView()
  108. {
  109. ListView listView = new ListView(this);
  110. recentAdapter = new UriBrowserAdapter();
  111. listView.setAdapter(recentAdapter);
  112. listView.setOnItemClickListener(new AdapterView.OnItemClickListener()
  113. {
  114. @SuppressWarnings({"unchecked"})
  115. public void onItemClick(AdapterView<?> adapterView, View view, int i, long l)
  116. {
  117. showDocument(((AdapterView<UriBrowserAdapter>) adapterView).getAdapter().getItem(i));
  118. }
  119. });
  120. listView.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT));
  121. return listView;
  122. }
  123. private void showDocument(File file)
  124. {
  125. showDocument(Uri.fromFile(file));
  126. }
  127. protected abstract void showDocument(Uri uri);
  128. private void setCurrentDir(File newDir)
  129. {
  130. adapter.setCurrentDirectory(newDir);
  131. getWindow().setTitle(newDir.getAbsolutePath());
  132. }
  133. @Override
  134. protected void onSaveInstanceState(Bundle outState)
  135. {
  136. super.onSaveInstanceState(outState);
  137. outState.putString(CURRENT_DIRECTORY, adapter.getCurrentDirectory().getAbsolutePath());
  138. }
  139. /**
  140. * 进入最近浏览文件的Activity
  141. */
  142. @Override
  143. protected void onResume()
  144. {
  145. super.onResume();
  146. recentAdapter.setUris(viewerPreferences.getRecent());
  147. }
  148. }