Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
B
beyond-clouds-android
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
云深项目组
beyond-clouds-android
Commits
3fe7234a
Commit
3fe7234a
authored
Mar 16, 2020
by
段启岩
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
重复点击底部导航后刷新界面
parent
e2b47479
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
88 additions
and
5 deletions
+88
-5
app/src/main/java/cn/yunliyunwai/beyondclouds/MainActivity.java
+31
-1
app/src/main/java/cn/yunliyunwai/beyondclouds/adapter/common/CategoryFragmentPagerAdapter.java
+12
-0
app/src/main/java/cn/yunliyunwai/beyondclouds/ui/DynamicFragment.java
+7
-1
app/src/main/java/cn/yunliyunwai/beyondclouds/ui/HomeFragment.java
+7
-1
app/src/main/java/cn/yunliyunwai/beyondclouds/ui/ProjectFragment.java
+7
-1
app/src/main/java/cn/yunliyunwai/beyondclouds/ui/QAFragment.java
+7
-1
app/src/main/java/cn/yunliyunwai/beyondclouds/ui/listener/OnNavigationReselectedListener.java
+5
-0
app/src/main/java/cn/yunliyunwai/beyondclouds/util/CategoryViewpagerUtils.java
+12
-0
No files found.
app/src/main/java/cn/yunliyunwai/beyondclouds/MainActivity.java
View file @
3fe7234a
...
...
@@ -23,10 +23,11 @@ import cn.yunliyunwai.beyondclouds.ui.HomeFragment;
import
cn.yunliyunwai.beyondclouds.ui.MyFragment
;
import
cn.yunliyunwai.beyondclouds.ui.ProjectFragment
;
import
cn.yunliyunwai.beyondclouds.ui.QAFragment
;
import
cn.yunliyunwai.beyondclouds.ui.listener.OnNavigationReselectedListener
;
import
cn.yunliyunwai.beyondclouds.util.StatusBarUtils
;
import
cn.yunliyunwai.beyondclouds.viewmodel.MainActivityViewModel
;
public
class
MainActivity
extends
BaseActivity
<
MainActivityViewModel
,
ActivityMainBinding
>
implements
BottomNavigationView
.
OnNavigationItemSelectedListener
{
public
class
MainActivity
extends
BaseActivity
<
MainActivityViewModel
,
ActivityMainBinding
>
implements
BottomNavigationView
.
OnNavigationItemSelectedListener
,
BottomNavigationView
.
OnNavigationItemReselectedListener
{
private
static
final
String
TAG
=
MainActivity
.
class
.
getCanonicalName
();
private
List
<
Fragment
>
fragments
;
...
...
@@ -75,6 +76,7 @@ public class MainActivity extends BaseActivity<MainActivityViewModel, ActivityMa
binding
.
bottomNavigationView
.
setOnNavigationItemSelectedListener
(
this
);
binding
.
bottomNavigationView
.
setOnNavigationItemReselectedListener
(
this
);
binding
.
bottomNavigationView
.
setItemIconTintList
(
null
);
}
...
...
@@ -100,6 +102,34 @@ public class MainActivity extends BaseActivity<MainActivityViewModel, ActivityMa
return
true
;
}
@Override
public
void
onNavigationItemReselected
(
@NonNull
MenuItem
item
)
{
switch
(
item
.
getItemId
())
{
case
R
.
id
.
home_fragment
:
dispatchReSelectEvent
(
0
);
break
;
case
R
.
id
.
project_fragment
:
dispatchReSelectEvent
(
1
);
break
;
case
R
.
id
.
dynamic_fragment
:
dispatchReSelectEvent
(
2
);
break
;
case
R
.
id
.
qa_fragment
:
dispatchReSelectEvent
(
3
);
break
;
case
R
.
id
.
my_fragment
:
dispatchReSelectEvent
(
4
);
break
;
}
}
private
void
dispatchReSelectEvent
(
int
index
)
{
Fragment
fragment
=
fragments
.
get
(
index
);
if
(
fragment
instanceof
OnNavigationReselectedListener
)
{
((
OnNavigationReselectedListener
)
fragment
).
onNavigationReselected
();
}
}
private
void
switchFragment
(
int
index
)
{
int
previousIndex
=
binding
.
getViewModel
().
getCurrentIndex
();
FragmentTransaction
transaction
=
getSupportFragmentManager
().
beginTransaction
();
...
...
app/src/main/java/cn/yunliyunwai/beyondclouds/adapter/common/CategoryFragmentPagerAdapter.java
View file @
3fe7234a
package
cn
.
yunliyunwai
.
beyondclouds
.
adapter
.
common
;
import
android.os.Bundle
;
import
android.view.ViewGroup
;
import
androidx.annotation.NonNull
;
import
androidx.fragment.app.Fragment
;
...
...
@@ -15,6 +16,7 @@ import cn.yunliyunwai.beyondclouds.ui.common.FragmentFactory;
public
class
CategoryFragmentPagerAdapter
extends
FragmentStatePagerAdapter
{
private
List
<
CommonCategory
>
categories
;
private
FragmentFactory
factory
;
private
Fragment
currentFragment
;
public
CategoryFragmentPagerAdapter
(
@NonNull
FragmentManager
fm
,
List
<
CommonCategory
>
categories
,
FragmentFactory
factory
)
{
super
(
fm
,
BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT
);
...
...
@@ -33,7 +35,17 @@ public class CategoryFragmentPagerAdapter extends FragmentStatePagerAdapter {
}
@Override
public
void
setPrimaryItem
(
@NonNull
ViewGroup
container
,
int
position
,
@NonNull
Object
object
)
{
super
.
setPrimaryItem
(
container
,
position
,
object
);
currentFragment
=
(
Fragment
)
object
;
}
@Override
public
int
getCount
()
{
return
categories
.
size
();
}
public
Fragment
getCurrentFragment
()
{
return
currentFragment
;
}
}
app/src/main/java/cn/yunliyunwai/beyondclouds/ui/DynamicFragment.java
View file @
3fe7234a
...
...
@@ -22,13 +22,14 @@ import cn.yunliyunwai.beyondclouds.data.model.Post;
import
cn.yunliyunwai.beyondclouds.databinding.FragmentDynamicBinding
;
import
cn.yunliyunwai.beyondclouds.ui.common.FragmentFactory
;
import
cn.yunliyunwai.beyondclouds.ui.common.RefreshableFragment
;
import
cn.yunliyunwai.beyondclouds.ui.listener.OnNavigationReselectedListener
;
import
cn.yunliyunwai.beyondclouds.util.CategoryViewpagerUtils
;
import
cn.yunliyunwai.beyondclouds.util.ContextUtils
;
import
cn.yunliyunwai.beyondclouds.viewmodel.DynamicFragmentViewModel
;
import
cn.yunliyunwai.beyondclouds.viewmodel.DynamicListFragmentViewModel
;
public
class
DynamicFragment
extends
BaseFragment
<
DynamicFragmentViewModel
,
FragmentDynamicBinding
>
{
public
class
DynamicFragment
extends
BaseFragment
<
DynamicFragmentViewModel
,
FragmentDynamicBinding
>
implements
OnNavigationReselectedListener
{
@Inject
ViewModelProvider
.
Factory
factory
;
...
...
@@ -60,6 +61,11 @@ public class DynamicFragment extends BaseFragment<DynamicFragmentViewModel, Frag
},
binding
.
magicIndicator
,
binding
.
viewPager
,
viewModel
,
true
);
}
@Override
public
void
onNavigationReselected
()
{
CategoryViewpagerUtils
.
forceRefresh
(
binding
.
viewPager
.
getAdapter
());
}
public
static
class
DynamicListFragment
extends
RefreshableFragment
<
Post
,
DynamicListFragmentViewModel
>
{
@Inject
...
...
app/src/main/java/cn/yunliyunwai/beyondclouds/ui/HomeFragment.java
View file @
3fe7234a
...
...
@@ -25,12 +25,13 @@ import cn.yunliyunwai.beyondclouds.data.model.Blog;
import
cn.yunliyunwai.beyondclouds.databinding.FragmentHomeBinding
;
import
cn.yunliyunwai.beyondclouds.ui.common.FragmentFactory
;
import
cn.yunliyunwai.beyondclouds.ui.common.RefreshableFragment
;
import
cn.yunliyunwai.beyondclouds.ui.listener.OnNavigationReselectedListener
;
import
cn.yunliyunwai.beyondclouds.util.CategoryViewpagerUtils
;
import
cn.yunliyunwai.beyondclouds.util.ContextUtils
;
import
cn.yunliyunwai.beyondclouds.viewmodel.BlogListFragmentViewModel
;
import
cn.yunliyunwai.beyondclouds.viewmodel.HomeFragmentViewModel
;
public
class
HomeFragment
extends
BaseFragment
<
HomeFragmentViewModel
,
FragmentHomeBinding
>
{
public
class
HomeFragment
extends
BaseFragment
<
HomeFragmentViewModel
,
FragmentHomeBinding
>
implements
OnNavigationReselectedListener
{
@Inject
ViewModelProvider
.
Factory
factory
;
...
...
@@ -75,6 +76,11 @@ public class HomeFragment extends BaseFragment<HomeFragmentViewModel, FragmentHo
}
@Override
public
void
onNavigationReselected
()
{
CategoryViewpagerUtils
.
forceRefresh
(
binding
.
viewPager
.
getAdapter
());
}
public
static
class
BlogListFragment
extends
RefreshableFragment
<
Blog
,
BlogListFragmentViewModel
>
{
@Inject
...
...
app/src/main/java/cn/yunliyunwai/beyondclouds/ui/ProjectFragment.java
View file @
3fe7234a
...
...
@@ -25,13 +25,14 @@ import cn.yunliyunwai.beyondclouds.data.model.Project;
import
cn.yunliyunwai.beyondclouds.databinding.FragmentProjectBinding
;
import
cn.yunliyunwai.beyondclouds.ui.common.FragmentFactory
;
import
cn.yunliyunwai.beyondclouds.ui.common.RefreshableFragment
;
import
cn.yunliyunwai.beyondclouds.ui.listener.OnNavigationReselectedListener
;
import
cn.yunliyunwai.beyondclouds.util.CategoryViewpagerUtils
;
import
cn.yunliyunwai.beyondclouds.util.ContextUtils
;
import
cn.yunliyunwai.beyondclouds.viewmodel.ProjectFragmentViewModel
;
import
cn.yunliyunwai.beyondclouds.viewmodel.ProjectListFragmentViewModel
;
public
class
ProjectFragment
extends
BaseFragment
<
ProjectFragmentViewModel
,
FragmentProjectBinding
>
{
public
class
ProjectFragment
extends
BaseFragment
<
ProjectFragmentViewModel
,
FragmentProjectBinding
>
implements
OnNavigationReselectedListener
{
@Inject
ViewModelProvider
.
Factory
factory
;
...
...
@@ -76,6 +77,11 @@ public class ProjectFragment extends BaseFragment<ProjectFragmentViewModel, Frag
}
@Override
public
void
onNavigationReselected
()
{
CategoryViewpagerUtils
.
forceRefresh
(
binding
.
viewPager
.
getAdapter
());
}
public
static
class
ProjectListFragment
extends
RefreshableFragment
<
Project
,
ProjectListFragmentViewModel
>
{
@Inject
...
...
app/src/main/java/cn/yunliyunwai/beyondclouds/ui/QAFragment.java
View file @
3fe7234a
...
...
@@ -22,6 +22,7 @@ import cn.yunliyunwai.beyondclouds.data.model.Question;
import
cn.yunliyunwai.beyondclouds.databinding.FragmentQaBinding
;
import
cn.yunliyunwai.beyondclouds.ui.common.FragmentFactory
;
import
cn.yunliyunwai.beyondclouds.ui.common.RefreshableFragment
;
import
cn.yunliyunwai.beyondclouds.ui.listener.OnNavigationReselectedListener
;
import
cn.yunliyunwai.beyondclouds.util.CategoryViewpagerUtils
;
import
cn.yunliyunwai.beyondclouds.util.ContextUtils
;
import
cn.yunliyunwai.beyondclouds.util.ViewModelUtils
;
...
...
@@ -29,7 +30,7 @@ import cn.yunliyunwai.beyondclouds.viewmodel.QAFragmentViewModel;
import
cn.yunliyunwai.beyondclouds.viewmodel.QuestionListFragmentViewModel
;
public
class
QAFragment
extends
BaseFragment
<
QAFragmentViewModel
,
FragmentQaBinding
>
{
public
class
QAFragment
extends
BaseFragment
<
QAFragmentViewModel
,
FragmentQaBinding
>
implements
OnNavigationReselectedListener
{
@Inject
ViewModelProvider
.
Factory
factory
;
...
...
@@ -60,6 +61,11 @@ public class QAFragment extends BaseFragment<QAFragmentViewModel, FragmentQaBind
},
binding
.
magicIndicator
,
binding
.
viewPager
,
viewModel
,
false
);
}
@Override
public
void
onNavigationReselected
()
{
CategoryViewpagerUtils
.
forceRefresh
(
binding
.
viewPager
.
getAdapter
());
}
public
static
class
QuestionListFragment
extends
RefreshableFragment
<
Question
,
QuestionListFragmentViewModel
>
{
@Inject
...
...
app/src/main/java/cn/yunliyunwai/beyondclouds/ui/listener/OnNavigationReselectedListener.java
0 → 100644
View file @
3fe7234a
package
cn
.
yunliyunwai
.
beyondclouds
.
ui
.
listener
;
public
interface
OnNavigationReselectedListener
{
void
onNavigationReselected
();
}
app/src/main/java/cn/yunliyunwai/beyondclouds/util/CategoryViewpagerUtils.java
View file @
3fe7234a
package
cn
.
yunliyunwai
.
beyondclouds
.
util
;
import
androidx.fragment.app.Fragment
;
import
androidx.viewpager.widget.PagerAdapter
;
import
androidx.viewpager.widget.ViewPager
;
import
net.lucode.hackware.magicindicator.MagicIndicator
;
...
...
@@ -12,6 +14,7 @@ import cn.yunliyunwai.beyondclouds.adapter.common.CategoryNavigatorAdapter;
import
cn.yunliyunwai.beyondclouds.base.BaseActivity
;
import
cn.yunliyunwai.beyondclouds.base.BaseFragment
;
import
cn.yunliyunwai.beyondclouds.ui.common.FragmentFactory
;
import
cn.yunliyunwai.beyondclouds.ui.common.RefreshableFragment
;
import
cn.yunliyunwai.beyondclouds.viewmodel.common.CategoryViewModel
;
public
class
CategoryViewpagerUtils
{
...
...
@@ -48,4 +51,13 @@ public class CategoryViewpagerUtils {
commonNavigator
.
setAdapter
(
new
CategoryNavigatorAdapter
(
categories
,
viewPager
));
});
}
public
static
void
forceRefresh
(
PagerAdapter
adapter
)
{
if
(
adapter
instanceof
CategoryFragmentPagerAdapter
)
{
Fragment
fragment
=
((
CategoryFragmentPagerAdapter
)
adapter
).
getCurrentFragment
();
if
(
null
!=
fragment
&&
fragment
instanceof
RefreshableFragment
)
{
((
RefreshableFragment
)
fragment
).
onRefresh
();
}
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment