这个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; } }
这样子就实现了...