zoukankan      html  css  js  c++  java
  • RecyclerView中显示不同的item

    测试代码:

    activity_main.xml

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.zzw.testrecyclerview.MainActivity" >
    
        <android.support.v7.widget.RecyclerView
            android:id="@+id/mRecyclerView"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >
        </android.support.v7.widget.RecyclerView>
    
    </RelativeLayout>

    MainActivity.java:

    package com.zzw.testrecyclerview;
    
    import java.util.ArrayList;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.support.v7.widget.LinearLayoutManager;
    import android.support.v7.widget.RecyclerView;
    
    public class MainActivity extends Activity {
    
        RecyclerView mRecyclerView;
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
            ArrayList<String> mTitles=new ArrayList<String>();
            for(int i=0;i<100;i++){
                mTitles.add("测试数据--"+i);
            }
            
            mRecyclerView=(RecyclerView) findViewById(R.id.mRecyclerView);
            mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
            
            MultipleItemAdapter adapter=new MultipleItemAdapter(this, mTitles);
            mRecyclerView.setAdapter(adapter);
            
        }
    
        
    }

    MultipleItemAdapter.java:

    package com.zzw.testrecyclerview;
    
    import java.util.ArrayList;
    
    import android.content.Context;
    import android.support.v7.widget.RecyclerView.Adapter;
    import android.support.v7.widget.RecyclerView.ViewHolder;
    import android.util.Log;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.view.ViewGroup;
    import android.widget.ImageView;
    import android.widget.TextView;
    
    public class MultipleItemAdapter extends Adapter<ViewHolder> {
    
        public static enum ITEM_TYPE {
            ITEM_TYPE_IMAGE, ITEM_TYPE_TEXT
        }
    
        private LayoutInflater mLayoutInflater;
        private Context mContext;
        private ArrayList<String> mTitle;
    
        public MultipleItemAdapter(Context context, ArrayList<String> titles) {
            mLayoutInflater = LayoutInflater.from(context);
            mContext = context;
            mTitle = titles;
        }
    
        @Override
        public int getItemCount() {
    
            return mTitle == null ? 0 : mTitle.size();
        }
    
        @Override
        public int getItemViewType(int position) {
    
            return position % 2 == 0 ? ITEM_TYPE.ITEM_TYPE_IMAGE.ordinal() : ITEM_TYPE.ITEM_TYPE_TEXT.ordinal();
        }
    
        @Override
        public void onBindViewHolder(ViewHolder holder, int position) {
            if(holder instanceof TextViewHolder){
                ((TextViewHolder) holder).mTextView.setText(mTitle.get(position));
                
            }else if(holder instanceof ImageViewHolder){
                
                ((ImageViewHolder) holder).text.setText(mTitle.get(position));
            }
        }
    
        @Override
        public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            if (viewType == ITEM_TYPE.ITEM_TYPE_IMAGE.ordinal()) {
                return new ImageViewHolder(mLayoutInflater.inflate(R.layout.item_image, parent, false));
            } else {
                return new TextViewHolder(mLayoutInflater.inflate(R.layout.item_text, parent, false));
            }
        }
    
        public static class TextViewHolder extends ViewHolder {
    
            protected static final String TAG = "TextViewHolder";
    
            TextView mTextView;
    
            public TextViewHolder(View itemView) {
                super(itemView);
                mTextView = (TextView) itemView.findViewById(R.id.textView);
    
                itemView.setOnClickListener(new OnClickListener() {
    
                    @Override
                    public void onClick(View v) {
                        Log.d(TAG, "TextViewHolder"+getPosition());
                    }
                });
            }
        }
    
        public static class ImageViewHolder extends ViewHolder {
    
            protected static final String TAG = "ImageViewHolder";
    
            ImageView mImage;
            TextView text;
    
            public ImageViewHolder(View itemView) {
                super(itemView);
                mImage = (ImageView) itemView.findViewById(R.id.image);
                text=(TextView) itemView.findViewById(R.id.text);
                itemView.setOnClickListener(new OnClickListener() {
    
                    @Override
                    public void onClick(View v) {
                        Log.d(TAG, "ImageViewHolder"+getPosition());
                    }
                });
            }
        }
    
    }

    item_image.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#2196F3"
        android:orientation="vertical" >
    
        <ImageView
            android:id="@+id/image"
            android:src="@drawable/ic_launcher"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal" />
    
        <TextView
            android:id="@+id/text"
            android:gravity="center"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColor="@android:color/holo_red_light"
            android:textSize="20sp" />
    
    </LinearLayout>

    item_text.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#E040FB"
        android:orientation="vertical" >
    
        <TextView
            android:id="@+id/textView"
            android:gravity="center"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:textColor="@android:color/holo_blue_light"
            android:textSize="30sp" />
    
    </LinearLayout>

    相关问题解决:

    使用android.support.v7.widget.RecyclerView出现 java.lang.reflect.InvocationTargetException:http://www.cnblogs.com/zzw1994/p/5004564.html

  • 相关阅读:
    关于struts页面跳转的问题
    java中==和equals的区别
    控制广播风暴的方法
    广播风暴的成因及解决办法
    思科FEX配置
    思科vPC技术和配置
    数据中心架构TOR和EOR
    ARP表项及老化时间
    MAC地址表和老化时间
    track 3 list boolean or
  • 原文地址:https://www.cnblogs.com/zzw1994/p/5038919.html
Copyright © 2011-2022 走看看