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