鑒于RecyclerView較之于ListView和GrideView有較大的靈活性,現在比較流行。
本菜今天學習下RecyclerView
轉載請注明出處#
[我的部落格]http://www.lostbug.com
RecyclerView是谷歌V7包下新增的控件,用來替代ListView的使用
RecyclerView is a more advanced and flexible version of ListView. This widget is a container for large sets of views that can be recycled and scrolled very efficiently. Use the RecyclerView widget when you have lists with elements that change dynamically
整體上看RecyclerView架構,提供了一種插拔式的體驗,高度的解耦,異常的靈活,通過設定它提供的不同LayoutManager,ItemDecoration , ItemAnimator實作令人瞠目的效果。
首先,在xml檔案中寫入控件:
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"/>
在activity中引用,并設定初始化
RecyclerView mRecyclerView = (RecyclerView) findViewById(R.id.recycler_view);
//設定布局管理器
// mRecyclerView.setLayoutManager(new LinearLayoutManager(this)) ;//ListView
mRecyclerView.setLayoutManager(new GridLayoutManager(this, ));//GridView
// mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, OrientationHelper.VERTICAL));//瀑布流
//設定Item添加、移除動畫
mRecyclerView.setItemAnimator(new DefaultItemAnimator());
//添加分割線
// mRecyclerView.addItemDecoration(RecyclerView.ItemDecoration);
重寫RecyclerView的Adapter類
/**
* www.lostbug.com
* Created by admin on 2016/6/12.
*/
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.NormalTextViewHolder> {
private Context mContext;
private ArrayList mData;
public void setData(ArrayList data) {
mData = data;
}
public RecyclerAdapter(Context context) {
mContext = context;
}
@Override
public int getItemCount() {
return mData == null ? : mData.size();
}
@Override
public NormalTextViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
NormalTextViewHolder myViewHolder =
new NormalTextViewHolder(LayoutInflater.from(mContext).
inflate(R.layout.item_recycler, parent, false));
return myViewHolder;
}
@Override
public void onBindViewHolder(NormalTextViewHolder holder, int position) {
try {
holder.tv.setText((String) mData.get(position));
} catch (Exception e) {
}
}
class NormalTextViewHolder extends RecyclerView.ViewHolder {
TextView tv;
public NormalTextViewHolder(View itemView) {
super(itemView);
tv = (TextView) itemView.findViewById(R.id.item_textView);
}
}
}
最後在activity中給RecyclerView傳入資料:
RecyclerAdapter mRecyclerAdapter;
mRecyclerView.setAdapter(mRecyclerAdapter=new RecyclerAdapter(this));
ArrayList<String> names=new ArrayList<>();
names.add("Java");
names.add("Android");
names.add("C++");
names.add("PHP");
names.add("Html");
names.add("Spring");
mRecyclerAdapter.setData(names);
mRecyclerAdapter.notifyDataSetChanged();
RecyclerView的基本功能就實作啦!!!
