日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

踏平RecyclerView使用的各种坑,跟ListView和GridView说拜拜

發(fā)布時間:2024/4/15 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 踏平RecyclerView使用的各种坑,跟ListView和GridView说拜拜 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

RecyclerView是谷歌推出的新View,使用和listview差不多。

在此之前推薦一本書:跟著敲一遍你能從中級變高級,從習(xí)慣eclipse變成使用Android studio大神。


但是RecyclerView對于初學(xué)者還是有點難度,下面以最簡短的代碼讓你一眼明白并牢記RecyclerView的使用方法

mRecyclerView = findViewById(R.id.id_recyclerview); //設(shè)置布局管理器 mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); //設(shè)置adapter mRecyclerView.setAdapter(adapter) //設(shè)置Item增加、移除動畫 mRecyclerView.setItemAnimator(new DefaultItemAnimator()); //添加分割線 mRecyclerView.addItemDecoration(new MyItemDecoration(this, MyItemDecoration.HORIZONTAL));
只有這四個方法簡單嗎??、

特別需要做的是寫自己的adapter

使用步驟:

①創(chuàng)建RecyclerView 對象

②設(shè)置適配器adapter

完成了。。。。

所以只要會寫adapter就會用RecyclerView了

最簡單的使用demo可參考http://blog.csdn.net/gfg156196/article/details/51727783

使用中的過程總結(jié):

①導(dǎo)包,請導(dǎo)入RecyclerView的包,不要選擇V7包。

compile 'com.android.support:recyclerview-v7:25.0.1'

②創(chuàng)建自己的adapter

/*** Created by yugu88 on 2016/11/29.15:14* 注意點:必須使用泛型Adapter<RecHoder>*/public class RecAdapter extends RecyclerView.Adapter<RecHoder> {Activity content;String[] menu_text;public RecAdapter(Activity content, String[] menu_text) {this.content=content;this.menu_text=menu_text;}/*** @return RecHoder 修改此返回類型為自己定義的ViewHolder*/@Overridepublic RecHoder onCreateViewHolder(ViewGroup parent, int viewType) {LayoutInflater layoutInflater=LayoutInflater.from(content);View view=layoutInflater.inflate(R.layout.adapter_listview_menu, parent, false);return new RecHoder(view);//創(chuàng)建自己的ViewHolder并返回此對象}/*** @param holder 修改此ViewHolder的類型為自己定義的RecHoder*/@Overridepublic void onBindViewHolder(RecHoder holder, final int position) {holder.tv_menu.setText(menu_text[position]);Log.e("getItemCount",position+"");holder.tv_menu.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {}});}@Overridepublic int getItemCount() {return menu_text.length;}}

③創(chuàng)建自己的ViewHolder

/*** Created by yugu88 on 2016/11/29.15:52*/public class RecHoder extends RecyclerView.ViewHolder {public TextView tv_menu;public RecHoder(View itemView) {super(itemView);tv_menu=(TextView) itemView.findViewById(R.id.tv_menu);} }

④在Activity中使用RecyclerView

listview_menu=(RecyclerView) findViewById(R.id.listview_menu); listview_menu.setLayoutManager(new LinearLayoutManager(this));// 此句最最重要LinearLayoutManager就是listview類型的 //listview_menu.setLayoutManager(new GridLayoutManager(this,4));// 此為GridView類型的視圖 4列 //創(chuàng)建adapter對象 RecAdapter recAdapter=new RecAdapter(this, menu_text); //設(shè)置adapter listview_menu.setAdapter(recAdapter);

setLayoutManager();的參數(shù)有如下幾種:

LinearLayoutManager 線性管理器。支持橫向、縱向。

GridLayoutManager 網(wǎng)格布局管理器
StaggeredGridLayoutManager 瀑布就式布局管理器

如果需要分割線:

// 第二個參數(shù)是橫線或者豎線的意思 listview_menu.addItemDecoration(new RecycleViewDivider(this, LinearLayoutManager.HORIZONTAL));

可以在setAdapter(recAdapter)之前或者之后都可以。

LinearLayoutManager.HORIZONTAL 表示分割線是橫著畫的,一般用在垂直滾動的listview。如下。


addItemDecoration該方法的參數(shù)為RecyclerView.ItemDecoration,該類為抽象類,我們需要繼承它寫一個自己的類。

它的源碼很短,如下:

public static abstract class ItemDecoration {public void onDraw(Canvas c, RecyclerView parent, State state) {onDraw(c, parent);}@Deprecatedpublic void onDraw(Canvas c, RecyclerView parent) {}public void onDrawOver(Canvas c, RecyclerView parent, State state) {onDrawOver(c, parent);}@Deprecatedpublic void onDrawOver(Canvas c, RecyclerView parent) {}@Deprecatedpublic void getItemOffsets(Rect outRect, int itemPosition, RecyclerView parent) {outRect.set(0, 0, 0, 0);}public void getItemOffsets(Rect outRect, View view, RecyclerView parent, State state) {getItemOffsets(outRect, ((LayoutParams) view.getLayoutParams()).getViewLayoutPosition(),parent);}}

方法都沒有實現(xiàn),我們繼承它實現(xiàn)自己的方法即可。

注意:onDraw方法,使用帶有State state參數(shù)的方法。。

具體的畫線的類如何寫可以參考http://www.cnblogs.com/huolongluo/p/5879292.html

如果你實在是懶得寫分割線,可以直接把別人的分割線類拿來使用。。。



總結(jié)

以上是生活随笔為你收集整理的踏平RecyclerView使用的各种坑,跟ListView和GridView说拜拜的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。