Android RecyclerView实现多布局切换功能从导入到运行详解,,上方图片轮播,下方多布局加载
来源:互联网 发布:商标图案设计软件 编辑:程序博客网 时间:2024/05/21 07:15
这个RecyclerView 感觉和它命里面相冲,几次想用 都不成功,现在说一下自己的几点想法和意见
1,首先是导入:
一定要记住:你的API等级要过了21
你的API等级要过21
你的API等级要过21
重要的话重复三遍........
其次还要注意的是你的V4包和导入的RecyclerView的版本一致,最后我找了很久版本一致,如果你的V4包是AS线上的,你一定要用线上的RecyclerView .如果你的V4包是线下的,你一定要用线下的RecyclerView. 还有就是版本,版本一致. 还有就是与V7包版本一致. 如果不一致,你就会出现
你的recyclerView包缺类的问题
你的recyclerView包缺类
重要的说两遍
最后我用的是
compile 'com.android.support:appcompat-v7:23.3.0'compile 'com.android.support:recyclerview-v7:23.3.0'这样 我终于导入了recyclerView .
2,其次就是多布局的问题了 我这里结合了RollPagerView这个第三方控件 上边实现轮播 下边是listview样式的加载
MainActivity里面
package com.test.administrator.testapp;import android.graphics.Color;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.util.Log;import android.widget.Toast;import com.jude.rollviewpager.RollPagerView;import com.jude.rollviewpager.hintview.ColorPointHintView;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Objects;public class MainActivity extends AppCompatActivity {private RecyclerView recyclerView; private List<Map<String,Object>> list=new ArrayList<>(); private RecAdapter recAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initData(); initCtrl(); recyclerView.setAdapter(recAdapter); recAdapter.setList(list); } private void initCtrl() { recAdapter=new RecAdapter(this,list); RecyclerView.LayoutManager manager = new LinearLayoutManager(MainActivity.this, LinearLayoutManager.VERTICAL, false); recyclerView.setLayoutManager(manager); } private void initView() { recyclerView= (RecyclerView) findViewById(R.id.recyclerView); } private void initData() { Map<String,Object> map00=new HashMap<String, Object>(); map00.put("img",R.drawable.img1); map00.put("txt","00"); list.add(map00); Map<String,Object> map01=new HashMap<String, Object>(); map01.put("img",R.drawable.img2); map01.put("txt","01"); list.add(map01); Map<String,Object> map02=new HashMap<String, Object>(); map02.put("img",R.drawable.img2); map02.put("txt","02"); list.add(map02); }}
activity_main
tools:context="com.test.administrator.testapp.MainActivity"><android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/recyclerView" ></android.support.v7.widget.RecyclerView></RelativeLayout>
lunbo_item.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content"> <com.jude.rollviewpager.RollPagerView android:id="@+id/roll_view_pager" android:layout_width="match_parent" android:layout_height="180dp" rollviewpager_play_delay="3000"/></LinearLayout>
putong_item.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content"><ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imageView"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/textView" /></LinearLayout>
RecAdaper
package com.test.administrator.testapp;import android.content.Context;import android.graphics.Color;import android.support.v7.widget.RecyclerView;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.TextView;import android.widget.Toast;import com.jude.rollviewpager.RollPagerView;import com.jude.rollviewpager.hintview.ColorPointHintView;import java.util.List;import java.util.Map;/** * Created by Administrator on 2016/10/9 0009. */public class RecAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private Context context; private List<Map<String,Object>> list; public RecAdapter(Context context, List<Map<String,Object>> list){ this.list=list; this.context = context; } public void setList(List<Map<String,Object>> list) { this.list = list; notifyDataSetChanged(); } @Override public int getItemViewType(int position) { Log.e("positions",position+"你好哦"); if (position==0){ return 0; }else { return 1; } } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = null; RecyclerView.ViewHolder holder = null; switch (viewType){ case 0: view = LayoutInflater.from(context).inflate(R.layout.lunbo_item, parent, false); holder = new ViewHolderOne(view); break; case 1: view = LayoutInflater.from(context).inflate(R.layout.putong_item, parent, false); holder = new ViewHolderTwo(view); break; } return holder; } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { Log.e("poss",position+"你不好"); switch (getItemViewType(position)){ case 0: ViewHolderOne viewHolderOne=(ViewHolderOne)holder; //设置播放时间间隔 viewHolderOne.rollPagerView.setPlayDelay(1000); //设置透明度 viewHolderOne.rollPagerView.setAnimationDurtion(500); //设置适配器 viewHolderOne.rollPagerView.setAdapter(new TestNormalAdapter()); //设置指示器(顺序依次) //自定义指示器图片 //设置圆点指示器颜色 //设置文字指示器 //隐藏指示器 //mRollViewPager.setHintView(new IconHintView(this, R.drawable.point_focus, // R.drawable.point_normal)); viewHolderOne.rollPagerView.setHintView(new ColorPointHintView(context, Color.YELLOW,Color.WHITE)); //mRollViewPager.setHintView(new TextHintView(this)); //mRollViewPager.setHintView(null); break; case 1: ViewHolderTwo viewHolderTwo=(ViewHolderTwo)holder; viewHolderTwo.imageView.setImageResource((int)list.get(position-1).get ("img")); viewHolderTwo.textView.setText(String.valueOf(list.get(position-1).get ("txt"))); Log.e("tooot",list.size()+"fsdfdsfsdf"); Toast.makeText(context,list.size()+"ffff",Toast.LENGTH_LONG).show(); break; } } @Override public int getItemCount() { return list.size()+1; } class ViewHolderOne extends RecyclerView.ViewHolder { RollPagerView rollPagerView=null; public ViewHolderOne(View view){ super(view); rollPagerView= (RollPagerView) view.findViewById(R.id.roll_view_pager); } } class ViewHolderTwo extends RecyclerView.ViewHolder { ImageView imageView=null; TextView textView=null; public ViewHolderTwo(View view) { super(view); // TODO Auto-generated constructor stub imageView= (ImageView) view.findViewById(R.id.imageView); textView = (TextView) view.findViewById(R.id.textView); } }}
TestNormalAdapter
package com.test.administrator.testapp;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import com.jude.rollviewpager.adapter.StaticPagerAdapter;/** * Created by Administrator on 2016/10/8 0008. */public class TestNormalAdapter extends StaticPagerAdapter { private int[] imgs = { R.drawable.img1, R.drawable.img2, R.drawable.img3, R.drawable.img4, }; @Override public View getView(ViewGroup container, int position) { ImageView view = new ImageView(container.getContext()); view.setImageResource(imgs[position]); view.setScaleType(ImageView.ScaleType.CENTER_CROP); view.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); return view; } @Override public int getCount() { return imgs.length; }}
这样子就实现了...
1 0
- Android RecyclerView实现多布局切换功能从导入到运行详解,,上方图片轮播,下方多布局加载
- RecyclerView多布局加载
- RecyclerView实现多布局
- 实现RecyclerView多布局
- RecyclerView多布局实现
- RecyclerView多布局实现
- Android recyclerView 多布局
- Android RecyclerView加载不同布局简单实现
- Android RecyclerView 详解(五) RecyclerView多布局的使用
- RecyclerView加载多类型item 实现淘宝首页布局
- Android RecyclerView多布局加载添加以及删除
- android新特性:使用RecyclerViewHeader一键添加RecyclerView头布局并实现轮播效果
- android新特性:使用RecyclerViewHeader一键添加RecyclerView头布局并实现轮播效果
- Android 动态布局实现多主题切换
- Recyclerview布局多条目加载+上下拉
- android studio pulltorefresh功能实现 通过swiperefreshlayout 使用recyclerview布局
- 从加载到进入kernel运行的内存布局变化
- Android实现图片轮播切换
- Uva 11582(Fibonacci循环节)
- 刻录光盘工具
- Revit+对象空间的关系
- 基于多租户的云计算Overlay网络
- webpack 模块加载兼打包工具——入门或进阶
- Android RecyclerView实现多布局切换功能从导入到运行详解,,上方图片轮播,下方多布局加载
- PAT 1090. Highest Price in Supply Chain (25)(求叶节点的最高层数,bfs)
- HDU 1532 - Drainage Ditches
- 安全退出多个activity
- YUV编码为HEVC(H.265)
- 内存管理:03高端内存简介
- typedef的使用方法
- 手机升级到iOS10,用Xcode7.3进行真机调试方法
- 关于listview点击跳转到中间位置(聚划算的样式)