Android使用RecyclerView实现列表功能
16lz
2021-12-04
在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查看
更多相关文章
- 箭头函数的基础使用
- NPM 和webpack 的基础使用
- Python list sort方法的具体使用
- 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
- Android驱动使用JNI调用
- Gradle在Android中的简单使用
- Android适配全攻略(学习笔记总结)
- android ---spannableStringBuilder
- android Animation的xml的编写