# MultipleItemPage
RecyclerView多布局,“我的”、“个人中心” 页面经典写法
#### 效果:
![](https://github.com/yechaoa/MultipleItemPage/raw/master/gif/multiple_item_page.gif)
![](https://github.com/yechaoa/MultipleItemPage/raw/master/gif/multiple_item_page.png)
<br>
> 多布局的使用场景还是蛮多的,比如“首页”、“我的”等页面,早期的时候大家一般都是拼起来的,后来开始自定义ListView(支付宝现在的首页还是ListView),再到后来的RecyclerView。
>
> 其实多布局都是一个套路,根据类型去引入layout,本文以RecyclerView为例,以BaseRecyclerViewAdapterHelper为辅演示多布局的写法。
<br>
### 1.添加依赖
> compile 'com.github.yechaoa:YUtils:2.0.6'
compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.34'
YUtils是一个快速开发工具集合,感兴趣的可以戳 [YUtils](https://github.com/yechaoa/YUtils)
<br>
### 2.主页面
#### 主页面采用的是 ViewPager + BottomNavigationView
> 稍微过一下吧。。不想看的直接跳到第3步
<br>
#### 布局:
```
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent"
tools:context="com.yechaoa.multipleitempage.MainActivity">
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp" />
<android.support.design.widget.BottomNavigationView
android:id="@+id/navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:background="?android:attr/windowBackground"
app:menu="@menu/navigation" />
</LinearLayout>
```
<br>
#### 添加Listener让二者关联起来
```
mViewPager.addOnPageChangeListener(mOnPageChangeListener);
mNavigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);
```
```
private ViewPager.OnPageChangeListener mOnPageChangeListener = new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
mNavigation.getMenu().getItem(position).setChecked(true);
}
@Override
public void onPageScrollStateChanged(int state) {
}
};
private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
= new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
case R.id.navigation_home:
mViewPager.setCurrentItem(0);
return true;
case R.id.navigation_category:
mViewPager.setCurrentItem(1);
return true;
case R.id.navigation_cart:
mViewPager.setCurrentItem(2);
return true;
case R.id.navigation_my:
mViewPager.setCurrentItem(3);
return true;
}
return false;
}
};
```
> ViewPager选中的时候让BottomNavigationView的item也选中,BottomNavigationView的item选中的时候让ViewPager切换page
<br>
### 3.Fragment(“我的”页面)
#### 布局,SwipeRefreshLayout(下拉刷新)嵌套RecyclerView:
```
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/swipeRefreshLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</android.support.v4.widget.SwipeRefreshLayout>
```
<br>
#### 初始化Data
```
private void initItemData() {
itemDataList = new ArrayList<>();
multipleItem = new MultipleItem(MultipleItem.TYPE_COUNT, 5);
multipleItem.mString1 = "收藏";
multipleItem.mString2 = "关注";
itemDataList.add(multipleItem);
multipleItem = new MultipleItem(MultipleItem.TYPE_ORDER_HEADER, 5);
multipleItem.mString2 = "type2";
itemDataList.add(multipleItem);
for (int i = 0; i < 5; i++) {
multipleItem = new MultipleItem(MultipleItem.TYPE_ORDER, 1);
multipleItem.mString1 = "待付款";
if (i % 2 == 0) {
multipleItem.isShow = true;
multipleItem.count = 6;
} else {
multipleItem.isShow = false;
multipleItem.count = 0;
}
itemDataList.add(multipleItem);
}
multipleItem = new MultipleItem(MultipleItem.TYPE_BALANCE, 5);
multipleItem.mString1 = "¥9999.00";
itemDataList.add(multipleItem);
multipleItem = new MultipleItem(MultipleItem.TYPE_TOOLS_HEADER, 5);
multipleItem.mString1 = "type5";
itemDataList.add(multipleItem);
for (int i = 0; i < 5; i++) {
multipleItem = new MultipleItem(MultipleItem.TYPE_TOOLS, 1);
multipleItem.mString1 = "使用帮助";
if (i % 2 == 0) {
multipleItem.isShow = true;
multipleItem.count = 100;
} else {
multipleItem.isShow = false;
multipleItem.count = 0;
}
itemDataList.add(multipleItem);
}
}
```
<br>
#### 获取id
```
mSwipeRefreshLayout = getActivity().findViewById(R.id.swipeRefreshLayout);
mRecyclerView = getActivity().findViewById(R.id.recyclerView);
```
<br>
#### 初始化SwipeRefreshLayout
```
private void initSwipeRefreshLayout() {
mSwipeRefreshLayout.setColorSchemeResources(
android.R.color.holo_blue_bright,
android.R.color.holo_green_light,
android.R.color.holo_orange_light);
mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
multipleItemQuickAdapter.notifyDataSetChanged();
mSwipeRefreshLayout.setRefreshing(false);
YUtils.showToast("刷新完成");
}
}, 2000);
}
});
}
```
<br>
#### 初始化RecyclerView
```
private void initRecyclerView() {
GridLayoutManager gridLayoutManager = new GridLayoutManager(getActivity(), 5);
mRecyclerView.setLayoutManager(gridLayoutManager);
multipleItemQuickAdapter = new MultipleItemQuickAdapter(itemDataList);
View headerView = getHeaderView(new View.OnClickListener() {
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.my_header_image:
YUtils.showToast("你点击了头像");
break;
case R.id.my_header_settings:
YUtils.showToast("你点击了设置");
break;
}
}
});
multipleItemQuickAdapter.addHeaderView(headerView);
mRecyclerView.setAdapter(multipleItemQuickAdapter);
没有合适的资源?快使用搜索试试~ 我知道了~
android个人中心页面效果源码
共79个文件
xml:34个
png:19个
java:11个
需积分: 12 3 下载量 9 浏览量
2022-04-20
23:49:51
上传
评论
收藏 668KB ZIP 举报
温馨提示
android个人中心页面效果源码
资源详情
资源评论
资源推荐
收起资源包目录
android个人中心页面效果源码.zip (79个子文件)
android个人中心页面效果源码
MultipleItemPage-master
gradlew.bat 2KB
gradlew 5KB
gradle.properties 730B
gif
multiple_item_page.png 87KB
multiple_item_page.gif 281KB
LICENSE 11KB
app
proguard-rules.pro 751B
src
test
java
com
yechaoa
multipleitempage
ExampleUnitTest.java 406B
androidTest
java
com
yechaoa
multipleitempage
ExampleInstrumentedTest.java 757B
main
res
menu
navigation.xml 679B
mipmap-xxxhdpi
ic_launcher.png 9KB
ic_launcher_round.png 15KB
drawable
ic_notifications_black_24dp.xml 464B
ic_home_black_24dp.xml 310B
shape_oval_red.xml 302B
ic_launcher.png 6KB
ic_cart.png 667B
ic_dashboard_black_24dp.xml 352B
right_go.png 616B
ic_sitting.png 1KB
selector_tab.xml 284B
ic_my.png 1KB
ic_home.png 524B
header_image.png 143KB
ic_category.png 494B
ic_launcher_background.xml 5KB
mipmap-hdpi
ic_launcher.png 3KB
ic_launcher_round.png 5KB
drawable-v24
ic_launcher_foreground.xml 2KB
values
colors.xml 370B
strings.xml 268B
attrs.xml 245B
styles.xml 381B
dimens.xml 211B
mipmap-xxhdpi
ic_launcher.png 6KB
ic_launcher_round.png 10KB
mipmap-mdpi
ic_launcher.png 2KB
ic_launcher_round.png 3KB
mipmap-xhdpi
ic_launcher.png 4KB
ic_launcher_round.png 7KB
mipmap-anydpi-v26
ic_launcher_round.xml 272B
ic_launcher.xml 272B
layout
layout_my_count.xml 843B
layout_my_order_header.xml 2KB
layout_my_tools.xml 1KB
fragment_fragment3.xml 396B
layout_my_header.xml 2KB
activity_main.xml 961B
fragment_fragment4.xml 454B
layout_my_tools_header.xml 720B
fragment_fragment1.xml 395B
fragment_fragment2.xml 396B
layout_my_order.xml 1KB
layout_my_balance.xml 2KB
java
com
yechaoa
multipleitempage
fragment
Fragment2.java 498B
Fragment4.java 8KB
Fragment3.java 498B
Fragment1.java 498B
bean
MultipleItem.java 1KB
App.java 515B
MainActivity.java 3KB
adapter
MultipleItemQuickAdapter.java 4KB
widget
CircleImageView.java 7KB
AndroidManifest.xml 807B
.gitignore 7B
build.gradle 1KB
gradle
wrapper
gradle-wrapper.jar 52KB
gradle-wrapper.properties 230B
.idea
gradle.xml 626B
runConfigurations.xml 564B
misc.xml 3KB
vcs.xml 180B
modules.xml 369B
dictionaries
yechao.xml 85B
.gitignore 118B
README.md 16KB
settings.gradle 15B
build.gradle 589B
新建文本文档.txt 0B
共 79 条
- 1
泰兰德爱媳妇
- 粉丝: 5
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0