RecyclerView、Viewpage、GridView组合用法
来源:互联网 发布:代尔夫特理工大学 知乎 编辑:程序博客网 时间:2024/06/08 10:00
在RecyclerVie的头布局中添加ViewPage,以GridView做为其内部数据做填充。效果图:
1.布局文件设置
1.在主布局文件中添加RecyclerView
<android.support.v7.widget.RecyclerView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/recycler_view"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"/>
2.RecyclerView中项目的布局
添加一个TextView
<TextView
android:id="@+id/recycler_textview"
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="name"/>
3.RecyclerView的头布局即ViewPage
添加一个Viewpage
<android.support.v4.view.ViewPager
android:id="@+id/recycler_head_test"
android:layout_width="match_parent"
android:layout_height="200dp">
</android.support.v4.view.ViewPager>
4.GridView 的布局
<ImageView
android:id="@+id/mageview_gridview"
android:src="@mipmap/ic_launcher"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/textview_gridView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
2.在MainActivity中初始化数据,(RecycleView和GridView的数据),并设置RecycleView
public class MainActivityextends AppCompatActivity {
List<String> datalist;
List<GridView> gridviewlist;
String TAG="0123";
private List<String>mdateList;
private RecyclerViewmrecyclerView;
private MAdapter mAdapter;
@Override
protected voidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initDate();
mrecyclerView = (RecyclerView) findViewById(R.id.recycler_view);
mrecyclerView.setLayoutManager(newLinearLayoutManager(this));
mrecyclerView.setItemAnimator(newDefaultItemAnimator());
mrecyclerView.setAdapter(mAdapter= new MAdapter());
}
protected void initDate(){
mdateList = new ArrayList<String>();
for(inti=1;i<=100;i++) {
String name = i+"fgrogyfbagrvg";
mdateList.add(name);
}
}
public void inigridviewlist(intdatelistSize){
gridviewlist =new ArrayList<>();
int num = (int)Math.ceil(datelistSize/8.0) ;
Log.d("Main","num= "+num);
for(inti=0;i<num;i++){
GridView gridviwe = new GridView(this);
gridviwe.setNumColumns(4);
int start = i*8;
int end = Math.min(i*8+8,datelistSize);
Log.d(TAG,"start="+start+" end="+end+" datelistSize"+datelistSize);
List<String> date=datalist.subList(start,end);
Log.d(TAG,""+date);
gridviwe.setAdapter(new GridviewAdapter(date,MainActivity.this));
gridviewlist.add(gridviwe);
}
}
public void initDateList(){
datalist = new ArrayList<>();
for (inti=0;i<24;i++){
String name = "kuahgyffaury"+i;
datalist.add(name);
}
Log.d(TAG,"datalist="+datalist);
}
}
3.三者的适配器
1.RecyclerView
class MAdapter extends RecyclerView.Adapter{
@Override
publicRecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
MViewHolder holder = null;
MyHeadHolder headHolder = null;
if (viewType == 1){
headHolder = new MyHeadHolder(MainActivity.this.getLayoutInflater().inflate(R.layout.recycler_head_test,null));
return headHolder;
}else{
holder = new MViewHolder(MainActivity.this.getLayoutInflater().inflate(R.layout.recycle_test,null));
return holder;
}
}
@Override
public voidonBindViewHolder(RecyclerView.ViewHolder holder, intposition) {
if(position>0){
MViewHolder holder1 = (MViewHolder) holder;
((MViewHolder) holder).textView.setText(mdateList.get(position));
}
if (position ==0){
MyHeadHolder holder1 = (MyHeadHolder) holder;
}
}
@Override
public intgetItemViewType(int position) {
if( position == 0 ){
return 1;
}else{
return 2;
}
}
@Override
public intgetItemCount() {
return mdateList.size();
}
class MViewHolder extends RecyclerView.ViewHolder{
public TextView textView;
public MViewHolder (View view){
super(view);
textView = (TextView) view.findViewById(R.id.recycler_textview);
}
}
class MyHeadHolder extends RecyclerView.ViewHolder{
public ViewPagerviewPager;
public MyHeadHolder(View view) {
super(view);
initDateList();
inigridviewlist(datalist.size());
viewPager = (ViewPager) view.findViewById(R.id.recycler_head_test);
viewPager.setAdapter(newViewpageAdapter(gridviewlist,MainActivity.this));
}
}
}
2.GridviewAdapter
public class GridviewAdapterextends BaseAdapter {
List<String> datalist;
Activity activity;
public GridviewAdapter(List<String> datalist, Activity activity){
this.activity= activity;
this.datalist= datalist;
}
@Override
public intgetCount() {
return datalist.size();
}
@Override
publicObject getItem(int position) {
return datalist.get(position);
}
@Override
public longgetItemId(int position) {
return position;
}
@Override
publicView getView(int position, View convertView, ViewGroup parent) {
View view = (View) activity.getLayoutInflater().inflate(R.layout.gridview_layout,null);
TextView textView = (TextView) view.findViewById(R.id.textview_gridView);
textView.setText(datalist.get(position));
return view;
}
}
3.ViewPage
public class ViewpageAdapter extendsPagerAdapter {
List<GridView> gridViewList;
Activity activity;
public ViewpageAdapter(List<GridView> gridViewList, Activity activity){
this.activity= activity;
this.gridViewList= gridViewList;
}
@Override
public intgetCount() {
return gridViewList.size();
}
@Override
public booleanisViewFromObject(View view, Object object) {
return view==object;
}
@Override
publicObject instantiateItem(ViewGroup container, intposition) {
container.addView(gridViewList.get(position));
return gridViewList.get(position);
}
@Override
public voiddestroyItem(ViewGroup container, intposition, Object object) {
container.removeView(gridViewList.get(position));
}
}
- RecyclerView、Viewpage、GridView组合用法
- RecyclerView 替换 Scrollview,gridview 组合。
- Viewpage+Fragment的组合使用
- GridView+DiskLruCache+LruCache+ViewPage显示图片效果
- GridView+DiskLruCache+LruCache+ViewPage显示图片效果
- android viewpage用法及适配器
- Android Fragment viewPage TabLayout用法。
- RecyclerView GridView 矩形自适应
- RecyclerView实现 gridview效果!
- RecyclerView+GridView分组效果
- RecyclerView用法
- Okhttp+RecyclerView组合(可用)
- ViewPage
- ViewPage
- viewpage
- ViewPage
- viewpage
- viewpage
- VMWare vSphere 6.0(一)
- sql 语句 将查询结果中数字等标示转成汉字
- JavaScript学习总结——Javascript非构造函数的继承
- List判空
- 函数的隐式声明
- RecyclerView、Viewpage、GridView组合用法
- 高德地图工具包
- 按时打算
- React组件refs详解
- 分析包信息
- 17-6-26前端电子书籍出处分享
- java基础:对象
- 自定义的spinnerView
- js语法深入四:史上最简洁最准确的闭包描述