AIDE RecyclerView基本用法

版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明。
本文链接:https://www.aidemx.cn/?p=432

RecyclerView概述

RecyclerView是Android一个更强大的控件,其不仅可以实现和ListView同样的效果,还优化了ListView中的各种不足。其可以实现数据纵向滚动,也可以实现横向滚动(ListView做不到横向滚动)。
接下来将使用替代support的androidx讲解RecyclerView的用法。

RecyclerView基本用法

因为RecyclerView属于新增的控件,Android将RecyclerView定义在support库里。若要使用RecyclerView,第一步是要在build.gradle中添加对应的支持库。

添加支持库

在app/build.gradle中的dependencies闭包添加以下内容:

implementation 'androidx.recyclerview:recyclerview:1.0.0'

添加RecyclerView到布局文件

<LinearLayout
	xmlns:android="https://schemas.android.com/apk/res/android"
	android:layout_width="match_parent"
	android:layout_height="match_parent"
	android:gravity="center">

	<androidx.recyclerview.widget.RecyclerView
		android:layout_width="match_parent"
		android:layout_height="match_parent"
		android:id="@+id/activitymainRecyclerView1"/>

</LinearLayout>

新建item_main.xml

创建TextView来显示数据源

<LinearLayout
	xmlns:android="https://schemas.android.com/apk/res/android"
	android:layout_width="fill_parent"
	android:layout_height="wrap_content"
	android:orientation="vertical"
	android:padding="10dp">

	<TextView
		android:layout_width="wrap_content"
		android:layout_height="wrap_content"
		android:id="@+id/itemmainTextView1"/>

</LinearLayout>

新增适配器MyAdapter

为RecyclerView新增适配器MyAdapter,并让其继承于RecyclerView.Adapter,把泛型指定为MyAdapter.ViewHolder。

/**
 * Created by 梦雪 on 2019/09/29.
 */
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
	//声明数据源
	private String[] data;

	/**
	 * 为每个数据项提供对视图的引用
	 */
	class ViewHolder extends RecyclerView.ViewHolder {
		private View view;
		//声明TextView
		public TextView tv;
		public ViewHolder(View view) {
			super(view);
			this.view = view;
			//找到TextView控件
			tv = view.findViewById(R.id.itemmainTextView1);
		}
	}

	/**
	 * 提供一个String[]类型的构造方法
	 */
	public MyAdapter(String[] data) {
		this.data = data;
	}

	/**
	 * 创建视图
	 */
	@Override
	public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup p1, int p2) {
		// TODO: Implement this method
		//创建一个新视图
		View view=LayoutInflater.from(p1.getContext()).inflate(R.layout.item_main, p1, false);
		return new ViewHolder(view);
	}

	/**
	 * 绑定视图
	 */
	@Override
	public void onBindViewHolder(MyAdapter.ViewHolder p1, final int p2) {
		// TODO: Implement this method
		//设置文本内容
		p1.tv.setText(data[p2]);
		//列表点击事件
		p1.itemView.setOnClickListener(new OnClickListener(){

				@Override
				public void onClick(View p1) {
					// TODO: Implement this method
					//点击列表时我们弹出点击列表项的文本内容
					Toast.makeText(p1.getContext(), data[p2], Toast.LENGTH_LONG).show();
				}
			});
	}

	/**
	 * 返回数据源的数量
	 */
	@Override
	public int getItemCount() {
		// TODO: Implement this method
		return data.length;
	}

}

修改MainActivity.java

/**
 * Created by 梦雪 on 2019/09/29.
 */
public class MainActivity extends Activity {
	//创建数据源
	String[] data={"A","B","C","D","E"};
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
		RecyclerView rv = findViewById(R.id.activitymainRecyclerView1);
		//添加分割线
		rv.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));

		//使用线性布局管理器
		RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(this);
		rv.setLayoutManager(layoutManager);

		//设置适配器
		MyAdapter adapter = new MyAdapter(data);
		rv.setAdapter(adapter);
    }
}

运行效果:

版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明。
本文链接:https://www.aidemx.cn/?p=432

梦雪

专注于AIDE教程分享

留下你的评论

*评论支持代码高亮<pre class="prettyprint linenums">代码</pre>

相关推荐