自从接触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
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
适配器文件:
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);
}
@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;
}
@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);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
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>