RecycleView是在Android 5.0 之後才出現的
新增在Google V7包裡面
用來取代Listview
RecycleView標準化了ViewHolder來做View的緩存
通過設置LayoutManager來實作ListView,GridView...等效果
是官方推薦使用的控件
點我看官方說明
接下來就看看怎麼使用吧!!!
第一步要在build.gradle加入recycylerview-v7
compile 'com.android.support:recyclerview-v7:24.1.1'
第二步則是在xml加入在你想要的位置
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="15"
android:id="@+id/readLibrary_recyclerView"/>
再來就是建立Adapter適配器囉!!
extends RecyclerView.Adapter<VH>
public class MyWordsRecyclerViewAdapter
extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
private Activity activity;
private JSONArray words;
public MyWordsRecyclerViewAdapter(Activity activity
,JSONArray words) {
this.activity = activity;
this.words = words;
}
}
這時會要你實作3個faction
一、
onCreateViewHolder
return實作畫面的ViewHolder程式碼如下
@Override
public RecyclerView.ViewHolder onCreateViewHolder(
ViewGroup parent, int viewType) {
return new ItemViewHolder(LayoutInflater
.from(parent.getContext())
.inflate(R.layout.item_words_recyclerview,null));
}
這裡我們必需先實作abstract class RecyclerView.ViewHolder
藉由實作建構子來取得我們所需要的控件
private class ItemViewHolder extends RecyclerView.ViewHolder {
TextView word, description;
ItemViewHolder(View itemView) {
super(itemView);
word = (TextView) itemView
.findViewById(R.id.wordsRecyclerView_word);
description = (TextView) itemView
.findViewById(R.id.wordsRecyclerView_description);
}
}
二、
onBindViewHolder
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder
, int position) {
//生產畫面時呼叫
ItemViewHolder itemViewHolder = (ItemViewHolder) holder;
JSONObject word = words.optJSONObject(position);
itemViewHolder.word.setText(word.optString("word"));
itemViewHolder.description
.setText(word.optString("description"));
}
第一個參數是剛剛onCreatViewHolder所return的
第二個則是view的位置
這個faction會在產生畫面時被呼叫
我們可以在這裡做一些想要的畫面設定
三、
getItemCount
@Override
public int getItemCount() {
return words.length();
}
最得資料的總數
我們就直接return資料的長度吧
這樣我們就完成了adapter的code
最後我們要在Activity中設定RecyclerView
//similar ListView
readRecyclerView.setLayoutManager(
new LinearLayoutManager(activity));
//similar GridView
readRecyclerView.setLayoutManager(
new GridLayoutManager(activity,2));
//similar 瀑布流
readRecyclerView.setLayoutManager(
new StaggeredGridLayoutManager(2
, OrientationHelper.VERTICAL));
MyWordsRecyclerViewAdapter adapter =
new MyWordsRecyclerViewAdapter(activity,words);
readRecyclerView.setAdapter(adapter);
除了基本的setAdapter之外
值得一提的是
RecyclerView 會依我們給的 LayoutManager 顯示出不同的樣子
我們可以依據本身的需求來決定塞什麼樣的LayoutManager進去
這樣我們的RecyclerView就完成了囉
趕快來試試吧!
留言列表