aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKazuki Yamaguchi <k@rhe.jp>2015-10-11 23:07:35 +0900
committerKazuki Yamaguchi <k@rhe.jp>2015-10-11 23:07:35 +0900
commite1195005912d3fdf85815807bef32c754e21addd (patch)
tree23e975e7a35804c1387458a3d440e4c81a8a2d4d
parente4b009a19e093f6d610c8bf3d91ed2b694a043be (diff)
downloadSmileEssence-e1195005912d3fdf85815807bef32c754e21addd.tar.gz
MainActivity: 現在のページの名前を ActionBar のタイトルに表示する
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.java35
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/adapter/PageListAdapter.java34
-rw-r--r--app/src/main/res/layout/navigation_list_item.xml44
3 files changed, 35 insertions, 78 deletions
diff --git a/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.java b/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.java
index 19e70e17..2756532c 100644
--- a/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.java
+++ b/app/src/main/java/net/lacolaco/smileessence/activity/MainActivity.java
@@ -24,6 +24,7 @@
package net.lacolaco.smileessence.activity;
+import android.app.ActionBar;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
@@ -65,7 +66,7 @@ import twitter4j.TwitterStream;
import java.lang.reflect.Field;
-public class MainActivity extends Activity implements Application.OnCurrentAccountChangedListener {
+public class MainActivity extends Activity implements Application.OnCurrentAccountChangedListener, ViewPager.OnPageChangeListener {
// ------------------------------ FIELDS ------------------------------
public static final int REQUEST_GET_PICTURE_FROM_GALLERY = 11;
@@ -201,7 +202,8 @@ public class MainActivity extends Activity implements Application.OnCurrentAccou
setContentView(R.layout.layout_main);
viewPager = (ViewPager) findViewById(R.id.viewPager);
- pagerAdapter = new PageListAdapter(this, viewPager);
+ pagerAdapter = new PageListAdapter(this);
+ viewPager.addOnPageChangeListener(this);
currentAccountIconImageView = (ImageView) findViewById(android.R.id.home);
currentAccountIconImageView.setScaleType(ImageView.ScaleType.FIT_XY);
@@ -384,6 +386,22 @@ public class MainActivity extends Activity implements Application.OnCurrentAccou
Notificator.getInstance().onForeground();
}
+ // --------------------- Interface OnPageChangeListener ---------------------
+
+ @Override
+ public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
+ }
+
+ @Override
+ public void onPageSelected(int position) {
+ Logger.debug(String.format("Page selected: %d", position));
+ updateActionBarTitle();
+ }
+
+ @Override
+ public void onPageScrollStateChanged(int state) {
+ }
+
// -------------------------- OTHER METHODS --------------------------
private void getImageUri(int requestCode, int resultCode, Intent data) {
@@ -414,7 +432,6 @@ public class MainActivity extends Activity implements Application.OnCurrentAccou
return true;
}
- @SuppressWarnings("ConstantConditions")
@Override
public void onCurrentAccountChanged(Account account) {
Logger.debug(String.format("onCurrentAccountChanged: %s", account.getUser().getScreenName()));
@@ -427,7 +444,7 @@ public class MainActivity extends Activity implements Application.OnCurrentAccou
// update actionbar
Runnable update = () -> {
- getActionBar().setTitle(user.getScreenName());
+ updateActionBarTitle();
String newUrl = user.getProfileImageUrl();
if (newUrl != null) {
new BitmapURLTask(newUrl, currentAccountIconImageView).execute();
@@ -453,6 +470,16 @@ public class MainActivity extends Activity implements Application.OnCurrentAccou
startStream();
}
+ private void updateActionBarTitle() {
+ ActionBar actionBar = getActionBar();
+ Account currentAccount = Application.getInstance().getCurrentAccount();
+ if (actionBar != null && currentAccount != null) {
+ String screenName = currentAccount.getUser().getScreenName();
+ String pageTitle = pagerAdapter.getName(viewPager.getCurrentItem());
+ setTitle(String.format("%s / %s", screenName, pageTitle));
+ }
+ }
+
// TODO: tab order?
private void initializePages() {
pagerAdapter.addPage(PostFragment.class, getString(R.string.page_name_post), null, false);
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/adapter/PageListAdapter.java b/app/src/main/java/net/lacolaco/smileessence/view/adapter/PageListAdapter.java
index 45d33ec7..04a38f35 100644
--- a/app/src/main/java/net/lacolaco/smileessence/view/adapter/PageListAdapter.java
+++ b/app/src/main/java/net/lacolaco/smileessence/view/adapter/PageListAdapter.java
@@ -26,7 +26,6 @@ package net.lacolaco.smileessence.view.adapter;
import android.os.Bundle;
import android.support.v13.app.FragmentPagerAdapter;
-import android.support.v4.view.ViewPager;
import net.lacolaco.smileessence.activity.MainActivity;
import net.lacolaco.smileessence.logging.Logger;
import net.lacolaco.smileessence.view.page.PageFragment;
@@ -37,7 +36,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
-public class PageListAdapter extends FragmentPagerAdapter implements ViewPager.OnPageChangeListener {
+public class PageListAdapter extends FragmentPagerAdapter {
// ------------------------------ FIELDS ------------------------------
@@ -46,9 +45,8 @@ public class PageListAdapter extends FragmentPagerAdapter implements ViewPager.O
// --------------------------- FragmentPagerAdapter ---------------------------
- public PageListAdapter(MainActivity _activity, ViewPager _viewPager) {
+ public PageListAdapter(MainActivity _activity) {
super(_activity.getFragmentManager());
- _viewPager.addOnPageChangeListener(this);
}
@Override
@@ -83,23 +81,6 @@ public class PageListAdapter extends FragmentPagerAdapter implements ViewPager.O
// ------------------------ INTERFACE METHODS ------------------------
- // --------------------- Interface OnPageChangeListener ---------------------
-
- @Override
- public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
- }
-
- @Override
- public synchronized void onPageSelected(int position) {
- //Synchronize pager and navigation.
- Logger.debug(String.format("Page selected: %d", position));
- //actionBar.setSelectedNavigationItem(position);
- }
-
- @Override
- public void onPageScrollStateChanged(int state) {
- }
-
// -------------------------- OTHER METHODS --------------------------
public void addPage(Class<? extends PageFragment> klass, String name, Bundle args) {
@@ -119,15 +100,8 @@ public class PageListAdapter extends FragmentPagerAdapter implements ViewPager.O
return pages.remove(position) != null; // TODO
}
- @Override
- public void notifyDataSetChanged() {
- ArrayList<String> itemList = new ArrayList<>();
- for (PageInfo f : pages) {
- itemList.add(f.getName());
- }
- //ArrayAdapter<String> adapter = new ArrayAdapter<>(context, R.layout.navigation_list_item, R.id.navigation_list_item_text, itemList);
- //actionBar.setListNavigationCallbacks(adapter, this);
- super.notifyDataSetChanged();
+ public String getName(int pos) {
+ return pages.get(pos).getName();
}
@Deprecated
diff --git a/app/src/main/res/layout/navigation_list_item.xml b/app/src/main/res/layout/navigation_list_item.xml
deleted file mode 100644
index fd9f37f8..00000000
--- a/app/src/main/res/layout/navigation_list_item.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!--
- ~ The MIT License (MIT)
- ~
- ~ Copyright (c) 2012-2014 lacolaco.net
- ~
- ~ Permission is hereby granted, free of charge, to any person obtaining a copy
- ~ of this software and associated documentation files (the "Software"), to deal
- ~ in the Software without restriction, including without limitation the rights
- ~ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- ~ copies of the Software, and to permit persons to whom the Software is
- ~ furnished to do so, subject to the following conditions:
- ~
- ~ The above copyright notice and this permission notice shall be included in all
- ~ copies or substantial portions of the Software.
- ~
- ~ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- ~ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- ~ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- ~ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- ~ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- ~ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- ~ SOFTWARE.
- -->
-
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:background="@android:color/transparent"
- android:orientation="vertical"
- android:paddingBottom="6dp"
- android:paddingLeft="5dp"
- android:paddingTop="6dp">
-
- <TextView
- android:id="@+id/navigation_list_item_text"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:gravity="left|center_vertical"
- android:textAppearance="@android:style/TextAppearance.Holo.Medium.Inverse"
- android:textColor="@color/white" />
-
-</FrameLayout> \ No newline at end of file