close

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就完成了囉
趕快來試試吧!












 


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 顏澤偉 的頭像
    顏澤偉

    Willy's Fish教學筆記』

    顏澤偉 發表在 痞客邦 留言(0) 人氣()