- 老早就聽說了recycleView喘落,是google在V7包提供的懈叹,以用來替代ListView、gridView的組件缤削。本人以前在IOS4.3的時(shí)候窘哈,寫過ios,對(duì)于目前的ListView組件來說亭敢,確實(shí)可配置的太少滚婉,已經(jīng)無法支撐強(qiáng)大的產(chǎn)品需求和功能,更加無法和ios的tableview抗衡帅刀。
- 本次學(xué)習(xí)計(jì)劃大致會(huì)有幾篇文章让腹,從最開始的使用recycleView远剩,以及高階使用等等。開始會(huì)給code骇窍,讓讀者有個(gè)初探瓜晤,后續(xù)會(huì)對(duì)API進(jìn)行梳理與分析。
代碼集成
xml代碼
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:background="#ff0000"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/id_num"
android:layout_width="match_parent"
android:layout_height="50dp"
android:gravity="center"
android:text="1" />
</FrameLayout>
UI界面代碼
/**
* 作者:liaoyong on 2016/7/6 09:54
* 郵箱:liao__yong@163.com
* 描述:
*/
public class RecycleListViewActivity extends Activity {
private RecyclerView mRecyclerView;
private List<String> mDatas;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recyclelistview);
initData();
mRecyclerView = (RecyclerView) findViewById(R.id.id_recyclerview);
mRecyclerView.addItemDecoration(new DividerItemDecoration(this,
DividerItemDecoration.VERTICAL_LIST));
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
RecycleViewAdapter recycleViewAdapter = new RecycleViewAdapter(this, mDatas);
mRecyclerView.setAdapter(recycleViewAdapter);
}
protected void initData()
{
mDatas = new ArrayList<String>();
for (int i = 0; i < 20; i++)
{
mDatas.add(String.format("this is the %d record.", i));
}
}
}
適配器代碼
/**
* 作者:liaoyong on 2016/8/29 17:24
* 郵箱:liaoyong@tuliu.com
* 描述:
*/
public class RecycleViewAdapter extends RecyclerView.Adapter<RecycleViewAdapter.MyViewHolder> {
private Context mContext;
private List<String> mDataSource;
public RecycleViewAdapter(Context context, List<String> dataSource) {
mContext = context;
mDataSource = dataSource;
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
MyViewHolder holder = new MyViewHolder(LayoutInflater.from(mContext).inflate(R.layout.item_home, parent,
false));
return holder;
}
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
holder.tv.setText(mDataSource.get(position));
}
@Override
public int getItemCount() {
return mDataSource.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder {
TextView tv;
public MyViewHolder(View view)
{
super(view);
tv = (TextView) view.findViewById(R.id.id_num);
}
}
}
- 以上代碼分享結(jié)束了腹纳,run以下痢掠,會(huì)如預(yù)期的顯示出列表。
QQ圖片20160902103410.png
- 結(jié)束語只估,recycleView的優(yōu)越性是顯而易見志群,不過更加強(qiáng)大的功能在這篇博文中還沒有體現(xiàn),這篇只是啟蒙蛔钙,后續(xù)幾篇會(huì)逐漸展現(xiàn)recycleView的強(qiáng)大之處锌云。