Android 开发之RecyclerView 实现ListView (一)
来源:互联网 发布:super junior知乎 编辑:程序博客网 时间:2024/06/08 10:15
1. 今天所介绍的就是通过 Android studio建立工程,然后通过RecycleView 实现ListView。
当然最终的目的是让大家更加认识到RecycleView.
废话不多说,先看最终效果图:
我们可以通过上图看出:
我们主要实现的功能 :
1. ListView 效果的实现
2. 分割线的自定义效果。
开始构建项目:
1. 由于Android studio没有默认把支持RecycleView的相关库导入进来,我们需要自己手动导入到项目中来。
步骤: File --> Project Structure -> 侧栏Modules --> Dependencies
然后找到:
导入进来。
那现在环境就搭建好了。 可以继续下一步操作。
2. 接下来就把 MainActivity中的代码贴出来, 具体的解释会在代码中讲解
public class MainActivity extends AppCompatActivity { private List<String> myDatas; //数组 private RecyclerView myRecycler; // 主角 private MySimpleAdapter myAdapter; //这个是自定义的adapter,代码会在后面贴出 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); //创建数据 createDatas();
<span style="white-space:pre"></span>//创建UI
createUI(); } private void createUI() { myRecycler = (RecyclerView)findViewById(R.id.myRecyclerView); // LinearLayoutManager.VERTICAL 垂直 // LinearLayoutManager.HORIZONTAL 横向 //最后一个参数代表是否反转。 myRecycler.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false)); //显示数据 myRecycler.setAdapter(new MySimpleAdapter(this,myDatas)); //分割线 myRecycler.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL_LIST)); } private void createDatas() { myDatas = new ArrayList<String>(); for ( int i = 'a'; i < 'z';i ++){ myDatas.add("字母"+(char)i+"哈哈"); } } }
3. 自定义 adapter的方法
</pre><pre name="code" class="java">package com.example.zgr.recycleviewdemo;import android.content.Context;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.SimpleAdapter;import android.widget.TextView;import org.w3c.dom.Text;import java.util.ArrayList;import java.util.List;/** * Created by zgr on 16/4/21. *///要实现ViewHolder.这里是自己写了一个MyViewHolder. 继承与ViewHolder.public class MySimpleAdapter extends RecyclerView.Adapter<MyViewHolder> { private List<String> myArrays; private Context context; private LayoutInflater inflater; //构造方法 context , 数据 public MySimpleAdapter(Context context,List<String> datas){ this.myArrays = datas; this.context = context; inflater = LayoutInflater.from(context); } //创建视图 holder @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { // Myview 需要自定义一个布局文件 . Layout_item MyViewHolder holder = new MyViewHolder(LayoutInflater.from(context).inflate(R.layout.layout_item,parent,false)); return holder; } //数据绑定 @Override public void onBindViewHolder(MyViewHolder holder, int position) { holder.tv.setText(myArrays.get(position)); } //获取项 @Override public int getItemCount() { return myArrays.size(); }}class MyViewHolder extends RecyclerView.ViewHolder{ TextView tv; public MyViewHolder(View itemView) { super(itemView); //获取对应的控件 tv = (TextView) itemView.findViewById(R.id.textView); }}
下面就是XML布局:
1. layout_item: 这个布局就是 每个listView item上的具体内容。 相当于iOS中的cell.
<?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="72dp" android:weightSum="1"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="New Text" android:id="@+id/textView" android:background="#e184fd" android:layout_weight="0.04" /></LinearLayout>
4. 自定义分割线样式:
1。引入第三方库: DividerItemDecoration 点击打开链接
2. 在MainActivity中 , RecyclerView填充数据后,加上
</pre><pre name="code" class="java">//分割线myRecycler.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL_LIST));3. 在 drawable项下,建立shape xml文件 。
创建出来的xml文件如下
然后将出现的文件 把selector 改成shape.如下图:
<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"><size android:height="4dp"> </size> <gradient android:centerColor="#ffffff" android:startColor="#ff00ff00" android:endColor="#df45d8" android:type="linear"/></shape>
4. values 项下 找到styles.xml。 并打开:
增加item一项: 名称为 listDivider. 那么这个名称是为何而来呢
在分割线第三方库中有这么一项,就是装载分割线, 如下代码:
private static final int[] ATTRS = new int[] { android.R.attr.listDivider };恰好系统也有这么一个属性,所以我们可以很方便的通过设置系统的属性, 指定系统的listDivider 为@drawable/divider 这个我们自己建立的xml. 是不是相当方便。
好了,我今天的介绍就到这里啦。
项目源码下载地址 :点击打开链接
0 0
- Android 开发之RecyclerView 实现ListView (一)
- android UI开发之RecyclerView(一)简单实现
- Android开发技术研究--RecyclerView使用完全解析(一)(用RecyclerView代替ListView)
- Android使用RecyclerView替代ListView(一)
- [Android]使用RecyclerView替代ListView(一)
- [Android]使用RecyclerView替代ListView(一)
- [Android]使用RecyclerView替代ListView(一)
- [Android]使用RecyclerView替代ListView(一)
- [Android]使用RecyclerView替代ListView(一)
- Android开发之实现滑动RecyclerView,浮动按钮的显示和隐藏(一)
- Android开发-RecyclerView-AndroidStudio(一)初体验对比ListView
- Android开发之RecyclerView(一)初步使用
- Android开发之RecyclerView完全解析(一)
- Android RecyclerView (一)初学,实现ListView列表效果。
- Android开发之RecyclerView与ListView对比详解
- Android开发之实现瀑布流效果(RecyclerView)
- Android开发之实现RecyclerView万能适配器
- Android RecyclerView实现listview效果
- lkmusic项目之(二)基本html结构
- A NEW MEDIAN FORMULA WITH APPLICATIONS TO PDE BASED DENOISING - 论文阅读
- 一道链表题目的思考
- WLAN使用的功率单位
- linux使用小命令使用汇集
- Android 开发之RecyclerView 实现ListView (一)
- 机器学习笔记1_3:广义线性模型(GLM, Generalized Linear Models)
- ios下使用rsa算法与php进行加解密通讯
- jqgrid的学习(一)
- 非チェック例外 と チェック例外
- Cisco VPP(2) 基本安装
- $watch How the $apply Runs a $digest
- 粒子发送器
- svn 学习