强大的RecyclerView实现复杂布局
来源:互联网 发布:sql 累加函数 编辑:程序博客网 时间:2024/06/08 07:30
当然我们提提他的兄弟ListView,这位大哥在android中UI的地位也是举足轻重,几乎存在于你的任何APP上,新闻,淘宝,。。。。。等等,但是ListView也存在大量的不足,性能差,扩展性不好,如果想要实现横向滚动,我也不知道能不能实现,反正没看过别人实现过,以前横向滚动有个Gallery去实现,不过在今天这种已经不需要了,我们可以通过RecyclerView实现横向滚动以及竖向滚动,当然我们还可以实现更加复杂的布局,不哔哔了,直接开始吧
先写子布局,新建sub.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="wrap_content" android:orientation="horizontal"> <ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout>
2.新建目标对象
package com.example.fang.myapplication;/** * Created by fang on 2017/11/12. */public class LayoutList { int Image; String text; public LayoutList(int image, String text) { Image = image; this.text = text; } public int getImage() { return Image; } public void setImage(int image) { Image = image; } public String getText() { return text; } public void setText(String text) { this.text = text; }}
实现适配器
package com.example.fang.myapplication;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.TextView;import java.util.List;/** * Created by fang on 2017/11/11. */public class MyViewAdapter extends RecyclerView.Adapter { List list; public MyViewAdapter(List list) { this.list = list; } class MyViewHolder extends RecyclerView.ViewHolder{ ImageView imageView; TextView textView; public MyViewHolder(View itemView) { super(itemView); imageView= (ImageView) itemView.findViewById(R.id.imageView); textView= (TextView) itemView.findViewById(R.id.textView); } } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { //这里我们发现需要绑定一个RecyclerView.ViewHolder,那么我们只能实现它 View view= LayoutInflater.from(parent.getContext()).inflate(R.layout.sub_layout,parent,false); MyViewHolder myViewHolder=new MyViewHolder(view); return myViewHolder; } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { //在这里我们进行数据的绑定工作 LayoutList layoutList= (LayoutList) list.get(position); ((MyViewHolder)holder).textView.setText(layoutList.getText()); ((MyViewHolder)holder).imageView.setImageResource(layoutList.getImage()); } @Override public int getItemCount() { return list.size(); }}
修改主布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.fang.myapplication.MainActivity"> <android.support.v7.widget.RecyclerView android:id="@+id/RecyclerView" android:layout_width="match_parent" android:layout_height="match_parent"></android.support.v7.widget.RecyclerView></LinearLayout>
,最后一步,java主程序
package com.example.fang.myapplication;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import java.util.ArrayList;import java.util.List;public class MainActivity extends AppCompatActivity { List list; RecyclerView recyclerView; MyViewAdapter myViewAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initinal(); recyclerView= (RecyclerView) findViewById(R.id.RecyclerView); LinearLayoutManager linear=new LinearLayoutManager(this); //在这里我们实现的是布局的管理 recyclerView.setLayoutManager(linear); recyclerView.setAdapter(myViewAdapter); } private void initinal() { list=new ArrayList(); list.add(new LayoutList(R.drawable.one,"暂停")); list.add(new LayoutList(R.drawable.two,"添加")); list.add(new LayoutList(R.drawable.three,"上一步")); list.add(new LayoutList(R.drawable.four,"停止")); list.add(new LayoutList(R.drawable.five,"播放")); myViewAdapter=new MyViewAdapter(list); }}
欧了,在这里我们顺便说一下,LayoutManager用于指定RecyclerView的布局方式,上面我们用的是线性布局。当然RecyclerView也为我们提供了GridLayoutManager和staggeredGridLayoutManager这两种内置的布局排列方式,前者实现的是网格布局,后者实现的是瀑布流,
阅读全文
0 0
- 强大的RecyclerView实现复杂布局
- RecyclerView实现复杂布局
- recyclerView实现复杂布局的好处
- 优雅地实现RecyclerView的复杂布局
- android RecyclerView的复杂布局
- android RecyclerView的复杂布局
- RecyclerView GridLayoutManager实现复杂的列数变化的布局
- RecyclerView GridLayoutManager实现复杂的列数变化的布局
- 复杂RecyclerView的实现
- 复杂RecyclerView的实现
- 不一样的RecyclerView优雅实现复杂列表布局(一)
- 不一样的RecyclerView优雅实现复杂列表布局(二)
- MultiType-Adapter 优雅的实现RecyclerVIew中的复杂布局
- 学习RecyclerView优雅实现复杂列表布局
- RecyclerView实现复杂首页(条目)布局
- RecyclerView下拉刷新、上拉加载更多以及复杂列表布局的实现
- 学习的步伐(二)Kotlin 实现Recyclerview列表(补充:tab选项卡+CoordinatorLayout收缩布局+复杂Recyclerview列表)
- Recyclerview根据setSpanSizeLookup实现复杂布局(不用嵌套)
- 请问使用awk如何先按照第一列的值分组,然后再统计之后的各列
- QT自学笔记(八)
- 1165符合条件的数
- C语言函数返回值问题
- Max Consecutive Ones
- 强大的RecyclerView实现复杂布局
- Ubuntu Kylin16.04 安装Hadoop2.7.4 伪分布式
- note关于GitHub
- 3. Scala数组
- Dubbo
- 单片机学习札记4---调试蜂鸣器驱动
- 新手linux 推荐
- Material Design学习之RecyclerView(更强大的滚动控件)(4)
- 说说搜索引擎中的人工干预