123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164 |
- package com.poqop.document;
- import android.app.Activity;
- import android.net.Uri;
- import android.os.Bundle;
- import android.view.View;
- import android.view.ViewGroup;
- import android.widget.AdapterView;
- import android.widget.FrameLayout;
- import android.widget.ListView;
- import android.widget.TabHost;
- import com.poqop.R;
- import com.poqop.document.presentation.BrowserAdapter;
- import com.poqop.document.presentation.UriBrowserAdapter;
- import java.io.File;
- import java.io.FileFilter;
- /**
- * 生成两个listview去填充tabHost
- * @author Administrator
- *
- */
- public abstract class BaseBrowserActivity extends Activity
- {
- private BrowserAdapter adapter;
- private static final String CURRENT_DIRECTORY = "currentDirectory";
- private final AdapterView.OnItemClickListener onItemClickListener = new AdapterView.OnItemClickListener()
- {
- @SuppressWarnings({"unchecked"})
- public void onItemClick(AdapterView<?> adapterView, View view, int i, long l)
- {
- final File file = ((AdapterView<BrowserAdapter>)adapterView).getAdapter().getItem(i);
- if (file.isDirectory())
- {
- setCurrentDir(file);
- }
- else
- {
- showDocument(file);
- }
- }
- };
- private UriBrowserAdapter recentAdapter;
- private ViewerPreferences viewerPreferences;
- protected final FileFilter filter;
- public BaseBrowserActivity()
- {
- this.filter = createFileFilter();
- }
- protected abstract FileFilter createFileFilter();
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.browser);
- viewerPreferences = new ViewerPreferences(this);
- final ListView browseList = initBrowserListView(); //这个listview:是显示文件夹和文件
- final ListView recentListView = initRecentListView(); //这个listview:是显示最近浏览的文件
- TabHost tabHost = (TabHost) findViewById(R.id.browserTabHost);
- tabHost.setup();
- //选项卡Browse
- tabHost.addTab(tabHost.newTabSpec("Browse").setIndicator("Browse").setContent(new TabHost.TabContentFactory()
- {
- public View createTabContent(String s)
- {
- return browseList;
- }
- }));
- //选项卡 Recent
- tabHost.addTab(tabHost.newTabSpec("Recent").setIndicator("Recent").setContent(new TabHost.TabContentFactory()
- {
- public View createTabContent(String s)
- {
- return recentListView;
- }
- }));
- }
- @Override
- protected void onPostCreate(Bundle savedInstanceState)
- {
- super.onPostCreate(savedInstanceState);
- final File sdcardPath = new File("/sdcard");
- if (sdcardPath.exists())
- {
- setCurrentDir(sdcardPath);
- }
- else
- {
- setCurrentDir(new File("/"));
- }
- if (savedInstanceState != null)
- {
- final String absolutePath = savedInstanceState.getString(CURRENT_DIRECTORY);
- if (absolutePath != null)
- {
- setCurrentDir(new File(absolutePath));
- }
- }
- }
- private ListView initBrowserListView()
- {
- final ListView listView = new ListView(this);
- adapter = new BrowserAdapter(this, filter);
- listView.setAdapter(adapter);
- listView.setOnItemClickListener(onItemClickListener);
- listView.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT));
- return listView;
- }
- private ListView initRecentListView()
- {
- ListView listView = new ListView(this);
- recentAdapter = new UriBrowserAdapter();
- listView.setAdapter(recentAdapter);
- listView.setOnItemClickListener(new AdapterView.OnItemClickListener()
- {
- @SuppressWarnings({"unchecked"})
- public void onItemClick(AdapterView<?> adapterView, View view, int i, long l)
- {
- showDocument(((AdapterView<UriBrowserAdapter>) adapterView).getAdapter().getItem(i));
- }
- });
- listView.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.FILL_PARENT));
- return listView;
- }
- private void showDocument(File file)
- {
- showDocument(Uri.fromFile(file));
- }
- protected abstract void showDocument(Uri uri);
- private void setCurrentDir(File newDir)
- {
- adapter.setCurrentDirectory(newDir);
- getWindow().setTitle(newDir.getAbsolutePath());
- }
- @Override
- protected void onSaveInstanceState(Bundle outState)
- {
- super.onSaveInstanceState(outState);
- outState.putString(CURRENT_DIRECTORY, adapter.getCurrentDirectory().getAbsolutePath());
- }
- /**
- * 进入最近浏览文件的Activity
- */
- @Override
- protected void onResume()
- {
- super.onResume();
- recentAdapter.setUris(viewerPreferences.getRecent());
- }
- }
|