在Android中,列表是使用最多最广的功能之一,而RecyclerView是Android中最灵活的列表控件之一,在企业开发中广泛运用,本章我们使用RecyclerView实现如下图的列表功能。

                        

一.与ListView类似,RecyclerView需要有容纳其布局的layout,以及展示layout的activity

1.activity_linear_recycler_view.xml代码如下,在xml中我们使用RelativeLayout来容纳RecyclerView

<?xml version="1.0" encoding="utf-8"?>    

2.LinearRecyclerViewActivity.java代码如下,用于展示RecyclerView,其中我们为RecyclerView设置Adapter:LinearAdapter

package com.example.fitz.demo4.recycleView;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import com.example.fitz.demo4.R;public class LinearRecyclerViewActivity extends AppCompatActivity {private RecyclerView mRvMain;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_linear_recycler_view);        mRvMain=(RecyclerView) findViewById(R.id.rv_main);        mRvMain.setLayoutManager(new LinearLayoutManager(LinearRecyclerViewActivity.this));        mRvMain.setAdapter(new LinearAdapter(LinearRecyclerViewActivity.this));    }}

二.实现适配器-LinearAdapter

package com.example.fitz.demo4.recycleView;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.TextView;import android.widget.Toast;import com.example.fitz.demo4.R;import java.util.ArrayList;import java.util.List;public class LinearAdapter extends RecyclerView.Adapter {    //context    private Context mContext;    //展示的数据    private List list=new ArrayList<>();    public LinearAdapter(Context context){        this.mContext=context;        for(int i=0;i<30;i++){            list.add(String.format("%s-%s", i/10+1,i));        }    }    //onCreateViewHolder方法创建一个viewHolder,viewholder可以理解为一条数据的展示布局,这里我们自定义类LinearViewHolder创建一个只有TextView的item    //这里我们需要创建每条布局使用的layout:layout_linear_item    @Override    public LinearAdapter.LinearViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {        return new LinearViewHolder(LayoutInflater.from(mContext).inflate(R.layout.layout_linear_item,parent,false));    }    //onBindViewHolder方法为item的UI绑定展示数据,    @Override    public void onBindViewHolder(LinearAdapter.LinearViewHolder holder, int position) {        holder.textView.setText(String.format("Hello World %s", list.get(position)));    }    //item的总长度    @Override    public int getItemCount() {        return 30;    }    //LinearViewHolder可以看作一个item的展示和内部逻辑处理,故而如果需要绑定事件,获取控件的时候要在itemView中获取    //itemView由onCreateViewHolder方法LayoutInflater.inflatec创建    class LinearViewHolder extends RecyclerView.ViewHolder{        private TextView textView;        public LinearViewHolder(View itemView){            super(itemView);            textView=(TextView) itemView.findViewById(R.id.tv_main);            //简单事件处理            textView.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {                    Toast.makeText(mContext,textView.getText().toString(),Toast.LENGTH_SHORT).show();                }            });        }    }}

2.layout_linear_item的实现:

<?xml version="1.0" encoding="utf-8"?>    

三:需要注意的一点,你需要在build.gradle中添加recyclerView依赖:

compile 'com.android.support:design:26.1.0',后面的版本号与所创建的Android应用一致,可展开External Libraries查看

更多相关文章

  1. 箭头函数的基础使用
  2. NPM 和webpack 的基础使用
  3. Python list sort方法的具体使用
  4. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  5. Android驱动使用JNI调用
  6. Gradle在Android中的简单使用
  7. Android适配全攻略(学习笔记总结)
  8. android ---spannableStringBuilder
  9. android Animation的xml的编写

随机推荐

  1. Android部分错误以及解决方案汇总
  2. 更新android sdk出现 A folder failed to
  3. Android发出HTTP请求,解析返回的JSON
  4. android菜单三级树实现
  5. Transparent Activity
  6. Android(安卓)下实现带有图标和Checkbox
  7. Android(安卓)去除String中的空格等
  8. android获取本机的IP地址和mac物理地址
  9. Android(安卓)打印堆栈
  10. Android(安卓)实现再按一次后退键退出应