RecyclerView中显示不同的item
来源:互联网 发布:zol买手机 知乎 编辑:程序博客网 时间:2024/06/06 00:12
测试代码:
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
1 1
- RecyclerView中显示不同的item
- RecyclerView显示不同的类型的item
- Android RecyclerView显示不同item布局
- RecyclerView 分组 item显示不同view
- ListView中显示不同的item
- recyclerView的加载不同的item
- CoordinatorLayout +RecyclerView+加载不同布局的item
- RecyclerView之添加不同的item布局
- CoordinatorLayout +RecyclerView+加载不同布局的item
- ListView显示不同的item
- 2012-7-18 在ListView中显示不同的ITEM
- listview中显示两种不同的item
- 不同布局的Item在listView中显示
- 一个ListView中显示不同的item(分组)
- RecyclerView中item嵌套RecyclerView不显示问题
- Android中Scrollview嵌套recyclerView,recyclerview设置wrapcontent无法显示以及显示后item显示不全的问题
- RecyclerView Item不显示的问题
- RecyclerView的item宽度不能全屏显示
- AWS之S3实践
- 【SSH 基础】SSH框架--struts深入详解(二)
- 手机号段分配规则
- 一线触摸屏tslib的移植
- laravel系列5-- 中间件
- RecyclerView中显示不同的item
- 了解硬盘
- android的知识和经验分享
- MFC ShowWindow
- GBDT(MART) 迭代决策树入门教程 | 简介
- android开源框架Volley框架简介
- 京东商品详情页技术实现
- SVN使用教程总结
- EasyUI Datagrid 前端按数字排序(自定义排序)