Android RecyclerView实现多布局切换功能从导入到运行详解,,上方图片轮播,下方多布局加载

这个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;
    }
}


这样子就实现了...

猜你喜欢

转载自blog.csdn.net/chenshuaiforwork/article/details/52769353