Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> 組件RecyclerView的應用(一),組件recyclerview

組件RecyclerView的應用(一),組件recyclerview

編輯:關於android開發

組件RecyclerView的應用(一),組件recyclerview


首先我們知道RecyclerView組件是ListView的升級版,今天先介紹基礎的RecyclerView的基本布局RecyclerView.Adapter和LayoutManager

第一:

LayoutManager

我們知道ListView只能在垂直方向上滾動,Android API沒有提供ListView在水平方向上面滾動的支持。或許有多種方式實現水平滑動,ListView並不是設計來做這件事情的。但是RecyclerView相較於ListView,在滾動上面的功能擴展了許多。它可以支持多種類型列表的展示要求,主要如下:

LinearLayoutManager ,可以支持水平和豎直方向上滾動的列表。

StaggeredGridLayoutManager ,可以支持交叉網格風格的列表,類似於瀑布流或者Pinterest。

GridLayoutManager ,支持網格展示,可以水平或者豎直滾動,如展示圖片的畫廊。

因此RecyclerView相對於ListView來說自定義性擴展了很多

第二:

RecyclerView.Adapter和ListView的BaseAdapter不同之處在於:BaseAdapter都是在getView一個方法中實現的,包括View的實例化以及組件的綁定。在RecyclerView.Adapter中,則提供了RecyclerView.ViewHolder機制,這個類必須我們自己定義,主要是用來保存視圖的類,主要在onCreateViewHolder中實現View的保存

public static class ViewHolder extends RecyclerView.ViewHolder
{
public TextView itemText;
public ViewHolder(View itemView) {
super(itemView);
itemText = (TextView)findViewById(R.id.item_text);
}
}
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = layoutInflater.inflate(R.layout.item_recyclerview,parent,false);
return new ViewHolder(view);
}
另外還需要實現getCount()方法,也就是返回item的數量,另外 onBindViewHolder()方法實現對應的組件和數據綁定
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
((ViewHolder)holder).itemText.setText(titleList.get(position));
}

以下為我寫的基本實現RecyclerView功能的一段小代碼
/**
適配器類
**/

public class RecyclerAdapter extends RecyclerView.Adapter {
    private List<String> titleList;
    private LayoutInflater layoutInflater;
    public RecyclerAdapter(Context context)
    {
        this.titleList = new ArrayList<>();
        for(int i=0;i<30;i++)
        {
            titleList.add("item"+i);
        }
        layoutInflater = LayoutInflater.from(context);
    }
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = layoutInflater.inflate(R.layout.item_recyclerview,parent,false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        ((ViewHolder)holder).itemText.setText(titleList.get(position));
    }

    @Override
    public int getItemCount() {
        return titleList.size();
    }
    public static class ViewHolder extends RecyclerView.ViewHolder
    {
        //public TextView itemText;
        public ViewHolder(View itemView) {
            super(itemView);
        }
    }
}

/**

主界面代碼  

**/

        mRecyclerView = (RecyclerView)pageList.get(SPORT).findViewById(R.id.recyclerview);
        mRecyclerView.setHasFixedSize(true);
        mLinearLayoutManager = new LinearLayoutManager(this);
        mLinearLayoutManager.setOrientation(OrientationHelper.VERTICAL);
        RecyclerAdapter mRecyclerAdapter = new RecyclerAdapter(this);
        mRecyclerView.setLayoutManager(mLinearLayoutManager);
        mRecyclerView.setAdapter(mRecyclerAdapter);

  注:pageList.get(SPORT)為自己定義的一個實例化view,讀者可以根據自己需要定制不同的xml文件並將其實例化為view

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved