零、
一、RecyclerView是什么
RecyclerView是support.v7包中的控件,显示数据、动画效果一气呵成,可以说是View中的豪杰了。官方的描述是
A flexible view for providing a limited window into a large data set.
总之就是ListView的加强版。那我们来看看怎么使用吧(其实基本方法和listView差不多)。
二、基础用法
首先我们要明确,如同ListView,我们需要RecyclerView和dataAdapter。 DataAdapter用来管理数据,例如将数据更新进RecyclerView中。而RecyclerView中LayoutManager可以用来管理你添加进来的item.
我们先在mainActivit布局的xml文件中加入RecyclerView。
<android.support.v7.widget.RecyclerView
android:id="@+id/id_recyclerview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:divider="#ffff0000"
android:dividerHeight="10dp" >
</android.support.v7.widget.RecyclerView>
复制代码
我们也需要定义好要添加进去的data的布局:item.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:background="#ABABAB"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/id_num"
android:layout_width="match_parent"
android:layout_height="60dp"
android:gravity="center"
android:fillViewport="true"/>
</FrameLayout>
复制代码
注意RecyclerView和TextView的Id。
接下来就是用来管理数据的DataAdapter类了。我们自定义一个类,继承自RecyclerView.Adapter,记得也要定义一个ViewHolder类(继承RecyclerView.ViewHolder)。我们定义的Adapter类主要要重写三个函数:
public ViewHolder onCreateViewHolder(ViewGroup parent,int viewType)
public void onBindViewHolder(ViewHolder holder,int position)
public int getItemCount()
这是具体的代码:
public class ItemAdapter extends RecyclerView.Adapter<ItemAdapter.ViewHolder> {
class ViewHolder extends RecyclerView.ViewHolder{
private TextView tv;
public ViewHolder(View view){
super(view);
tv = view.findViewById(R.id.id_num);
}
}
private Context context;
private List<String> datas;
public ItemAdapter(Context context){
this.context = context;
}
public void setDatas(List<String> datas){
this.datas = datas;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent,int viewType){
ViewHolder holder = new ViewHolder(LayoutInflater.from(context).inflate(R.layout.item,parent,false));
return holder;
}
@Override
public void onBindViewHolder(ViewHolder holder,int position){
holder.tv.setText(datas.get(position);
}
@Override
public int getItemCount(){
return datas.size();
}
}
复制代码
做完这些,我们就可以在MainActivi中加载RecyclerView和Item了。
加载数据我们首先要获得我们的RecyclerView:1、通过FindViewById找到RecyclerView,2、设置LayoutManag,2、设置Adapter
设置Adapter的主要思路是:1、实例化一个我们的Adapter对象,然后通过setDatas设置好数据以便Adapter将数据绑定在ViewHolder上。2、将自己的RecyclerView设置好Adapter。
好了,话不多说,Show me the code.
public class MainActivity extends AppCompatActivity {
private RecyclerView mRecyclerView;
private List<String> mDatas;
private ItemAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initData();
mAdapter = new ItemAdapter(MainActivity.this);
mAdapter.setDatas(mDatas);
mRecyclerView = findViewById(R.id.id_recyclerview);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mRecyclerView.setAdapter(mAdapter);
}
protected void initData()
{
mDatas = new ArrayList<String>();
for(int i =0;i<30;i++){
mDatas.add("item"+i);
}
}
复制代码
这样就O了个K了。
//作为Android开发的初学者,如果我有错误的地方或者不足的话欢迎大家指正。