Android recycleview 多布局
来源:互联网 发布:97网络含义是什么 编辑:程序博客网 时间:2024/05/24 04:30
Android recycleview 多布局
在Android开发项目中我们会经常遇到过列表多部局 如下:
那么这又是如何实现的呢其实很简单
main.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:orientation="vertical"> <android.support.v7.widget.RecyclerView android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="match_parent" /></LinearLayout>
布局写完了开始写代码
/** * Created by zhm . */public class RecyCleTypeClass extends Activity { private RecyclerView mRecycleView; private YueZhiPerSionAdapter adapter; private List<Map<String, String>> mapList; private Map<String, String> map; //数据源 private List<String> ml = new ArrayList<>(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mRecycleView = (RecyclerView) findViewById(R.id.recycler_view); mRecycleView.setLayoutManager(new LinearLayoutManager(this)); mapList = new ArrayList<>();//这里模拟服务器返回来的数据类型 ml.add("类型1"); ml.add("类型2"); ml.add("类型2"); ml.add("类型1"); ml.add("类型2"); ml.add("类型1"); for (int i = 0; i < ml.size(); i++) { map = new HashMap<>(); if (ml.get(i).equals("类型1")) { map.put("ListType", "0"); map.put("wenzi", "这是类型1横向排列"); } else { map.put("ListType", "1"); map.put("tupian", "这是类型2纵向排列" + ""); } mapList.add(map); } adapter = new YueZhiPerSionAdapter(mapList); mRecycleView.setAdapter(adapter); }}
自定义Adapter
package com.yuezhi.ap50;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;import java.util.List;import java.util.Map;/** * Created by PVer on 2017/7/31. * <p> * RecycleView 多种类型 */public class YueZhiPerSionAdapter extends RecyclerView.Adapter { private View mView; private List<Map<String, String>> mapList; public static final int VALUE1 = 1; public static final int VALUE2 = 2; public YueZhiPerSionAdapter(List<Map<String, String>> mapList) { this.mapList = mapList; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { VideoViewHolder mViewHolder; TextViewHolder mTViewHolder; if (viewType == VALUE1) { mView = LayoutInflater.from(parent.getContext()).inflate(R.layout.one, null); mTViewHolder = new TextViewHolder(mView); return mTViewHolder; } else if (viewType == VALUE2) { mView = LayoutInflater.from(parent.getContext()).inflate(R.layout.two, null); mViewHolder = new VideoViewHolder(mView); return mViewHolder; } return null; } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { if (holder instanceof VideoViewHolder) { ((VideoViewHolder) holder).yuezhi_radio_content.setText(mapList.get(position).get("tupian")); } else if (holder instanceof TextViewHolder) { ((TextViewHolder) holder).text_number.setText(mapList.get(position).get("wenzi")); } } @Override public int getItemCount() { return mapList == null ? 0 : mapList.size(); } @Override public int getItemViewType(int position) { int Type = Integer.parseInt(mapList.get(position).get("ListType")); switch (Type) { case 0: return VALUE1; //文字 case 1: return VALUE2; //图片 default: return -1; } } public static class TextViewHolder extends RecyclerView.ViewHolder { public TextView text_number; public TextViewHolder(View itemView) { super(itemView); text_number = (TextView) itemView.findViewById(R.id.leixing1); } } public static class VideoViewHolder extends RecyclerView.ViewHolder { public TextView yuezhi_radio_content; public VideoViewHolder(View itemView) { super(itemView); yuezhi_radio_content = (TextView) itemView.findViewById(R.id.leixing2); } }}
item 布局控件 one.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:layout_marginTop="50dp" android:gravity="center" android:background="#ccffee" android:orientation="horizontal"> <TextView android:id="@+id/leixing1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="20dp" android:text="version:1.1.0" /> <TextView android:drawableRight="@drawable/ic_menu_camera" android:layout_width="60dp" android:layout_height="50dp" android:background="#eeddff" android:text="" /></LinearLayout>
two.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="#eedd" android:layout_marginTop="20dp" android:orientation="vertical"> <ImageView android:layout_width="match_parent" android:layout_height="60dp" android:background="@drawable/ic_menu_camera" /> <TextView android:id="@+id/leixing2" android:layout_width="match_parent" android:gravity="center" android:layout_height="match_parent" android:text="类型1" /></LinearLayout>
阅读全文
0 0
- Android recycleview 多布局
- Android RecycleView 的多布局
- android RecycleView复杂多条目的布局
- RecycleView多Item布局
- RecycleView实现多布局
- RecycleView的多布局
- recycleView的多布局
- android 给多列的RecycleView添加头布局
- RecycleView+BaseRecycleViewAdapterHelper多布局实现
- RecycleView 的多条目布局
- RecycleView布局
- 关于Recycleview返回多个item布局
- Recycleview 多布局添加和cardview使用
- Recycleview实现多条目加载布局
- recycleview多布局,带type值。
- android控件使用---recycleview自定义上拉加载,和加载多个布局及加入动画
- RecycleView多条目布局不填充满父布局
- Android RecycleView多Item实践
- HADOOP集群搭建实战(HA高可靠性模式)
- (1)Python笔记:抓取CSDN博文
- LRU算法 c++手写 map
- jQuery实现input框输入值动态搜索
- 洛谷的文件夹(树形结构+DFS+字符串哈希)
- Android recycleview 多布局
- 最令人头疼的 Python 问题
- Django vs SQLAlchemy:哪个 Python ORM 更好
- 2017年中国程序员调查分析:大数据就业前景广阔
- IntelliJ IDEA 学习笔记
- Andorid架构之BaseActivity
- 用Python3实现一个简单的爬虫。
- 关于C语言的理解和编译过程
- Android友盟微信分享失败原因