1.为什么要选择RecycerView
一般情况下我们会用listview比较多,但是listview在一些情况无法满足我们的需求,或者说在某些情况下
不适合我们的快速开发!!从两者的适配器的编写中可以看出,recycerview更简单的。
不说那么多,这次我们来简单体验一下recycerview
2.RecycerView的简单实现
1.首先我们得把库引入我们的项目中
compile 'com.android.support:recyclerview-v7:23.1.1'
2.我们的布局,分两个:一个是主页面上的布局,另一个是我们列表页布局
主页面布局:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.example.com.wechart.Activity.MainActivity" > <android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/RecycerView_main" > </android.support.v7.widget.RecyclerView> </LinearLayout>
列表页布局:
<?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="60dp" android:orientation="horizontal" android:background="@color/blue" > <ImageView android:layout_width="40dp" android:layout_height="40dp" android:id="@+id/top_tool_img" android:layout_margin="10dp" android:src="@drawable/major" /> <TextView android:id="@+id/top_tool_txt" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:layout_gravity="center" android:text="@string/top_tool_txt" /> </LinearLayout>
3.我们的适配器也是重点的重点
package com.example.com.wechart.Activity.Adapter; 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.ImageView; import android.widget.TextView; import com.example.com.wechart.R; import java.util.List; /** * Created by 廖成康 on 2017/3/12. */ public class GalleryAdapter extends RecyclerView.Adapter<GalleryAdapter.ViewHolder> { private LayoutInflater inflater; private List<Integer> imgData; private List<String> txtData; public GalleryAdapter(List<Integer> imgData, List<String> txtData, Context context) { this.imgData = imgData; this.txtData = txtData; this.inflater=LayoutInflater.from(context); } /* * 创建viewholder * * */ @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view=inflater.inflate(R.layout.reclycview_layout,parent,false); ViewHolder viewHolder=new ViewHolder(view); viewHolder.id_index_gallery_item_image= (ImageView) view.findViewById(R.id.id_index_gallery_item_image); viewHolder.id_index_gallery_item_text= (TextView) view.findViewById(R.id.id_index_gallery_item_text); return viewHolder; } /* * 操控控件 * * */ @Override public void onBindViewHolder(ViewHolder holder, int position) { holder.id_index_gallery_item_image.setImageResource(imgData.get(position)); holder.id_index_gallery_item_text.setText(txtData.get(position)); } /* * reclyerview * 数目 * * */ @Override public int getItemCount() { return imgData==null?0:imgData.size(); } /* * 定义控件 * * */ public static class ViewHolder extends RecyclerView.ViewHolder { public ViewHolder(View itemView) { super(itemView); } ImageView id_index_gallery_item_image; TextView id_index_gallery_item_text; } }
4.我们主Activity上的数据添加和RecyclerView上布局的设置
package com.example.com.wechart.Activity; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.widget.LinearLayout; import com.example.com.wechart.Activity.Adapter.GalleryAdapter; import com.example.com.wechart.R; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private List<Integer> imgData=new ArrayList<>(); private List<String> txtData=new ArrayList<>(); private RecyclerView recyclerView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); recyclerView= (RecyclerView) findViewById(R.id.RecycerView_main); addList(); LinearLayoutManager manager=new LinearLayoutManager(this); manager.setOrientation(LinearLayout.HORIZONTAL); recyclerView.setLayoutManager(manager); recyclerView.setAdapter(new GalleryAdapter(imgData,txtData,this)); } /* * 添加控件信息 * * */ private void addList() { txtData.add("1"); txtData.add("2"); txtData.add("3"); txtData.add("4"); txtData.add("5"); imgData.add(R.drawable.btn_img_one); imgData.add(R.drawable.btn_img_two); imgData.add(R.drawable.major); imgData.add(R.drawable.message); imgData.add(R.drawable.message); } }
OK,基本上简单的Recycerview就实现了。。。。。。。。。。。。。。。。。