自从接触Android studio以后,对全新的Android UI设计理念以及V7包都有了全新的认识和学习掌握的渴望,因此特地去看了一下全新控件RecycleView的使用,总结如下。
他的用法与listview的用法差不多,主要由:adapter、排列布局、执行动画三个部分构成,其中adapter不需要再继承自baseadapter , 转而继承RecyclerView.Adapter这个属性,这是谷歌所规定以及建议的一个方法 , 其中view holder与原本的用法无异,主要就是申明item中的布局文件,这里的MyViewHolder就是继承自ViewHolder,并且我把它直接现在adapter里作为其内部类来使用。
除此之外,recycleview可以实现ListView的布局、gridview的布局以及瀑布流的布局,因此除了设置其adapter以外,还需声明他的布局属性,由布局管理器:LinearLayoutManager ,别的和list view的用法无太大差异,直接贴上代码:
主activity文件:
private RecyclerView mRecycleView;
private List<String> mDatas;
private com.im.ui.adapter.SimpleAdapter mAdapter;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.activity_first , container , false);
//实例化控件
mRecycleView = (RecyclerView) v.findViewById(R.id.recycle);
//布局管理器, LinearLayoutManager.VERTICAL:list设置为垂直
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity() , LinearLayoutManager.VERTICAL , false);
mRecycleView.setLayoutManager(linearLayoutManager);
mAdapter = new com.im.ui.adapter.SimpleAdapter(getActivity() , mDatas);
mRecycleView.setAdapter(mAdapter);
//设置分割线,DividerItemDecoration:GitHub上的一个分割线类,可自行搜索
mRecycleView.addItemDecoration(new DividerItemDecoration(getActivity() , DividerItemDecoration.VERTICAL_LIST));
return v;
}
适配器文件:
public class SimpleAdapter extends RecyclerView.Adapter<MyViewHolder>{
private LayoutInflater mInflater;
private Context mContext;
private List<String> mDatas;
public SimpleAdapter(Context context , List<String> datas){
this.mContext = context;
this.mDatas = datas;
mInflater = LayoutInflater.from(context);
}
//创建ViewHolder
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = mInflater.inflate(R.layout.item_first , parent , false);
MyViewHolder viewHolder = new MyViewHolder(view );
return viewHolder;
}
//绑定一个ViewHolder
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
holder.tv.setText(mDatas.get(position));
}
@Override
public int getItemCount() {
return mDatas.size();
}
}
class MyViewHolder extends RecyclerView.ViewHolder{
TextView tv;
public MyViewHolder(View itemView) {
super(itemView);
tv = (TextView) itemView.findViewById(R.id.tv_item_first);
}
}
xml:
<android.support.v7.widget.RecyclerView
android:id="@+id/test_recycle"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v7.widget.RecyclerView>