換新公司很久了,也很久沒有寫文章了(哎,新公司太壓榨人了QAQ,下班很晚)。以后盡量保持一周一更。最近打算整理一下來了新公司學的東西(哎,突然發(fā)現(xiàn)要學的東西太多了,記不住哇)
一. RecycleView的基本使用:
來了新公司后才慢慢的接觸了RecycleView,之前實習的公司還是用的listView和gridview,真是太落后了,慢慢接觸了RecycleView,發(fā)現(xiàn)這個控件真是太好用了。(自從用了RecycleView,腿也不痛了,腰也不酸了,上樓也有勁了)。
1.首先添加依賴
在gradle中添加依賴(盡量使用implementation吧,到今年年底,谷歌爸爸就不讓用compile了)
implementation 'com.android.support:recyclerview-v7:27.0.2'
2.在xml代碼中導入
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
3.代碼中使用
mRecyclerView = findViewById(R.id.recyclerView);//獲取recycleview的實例。
//設置recycleview的樣式,這里先以單行的垂直方向上為例。
mRecyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false));
//給RecycleView添加適配器,list定義一組數(shù)就可以,這里就不詳細貼出了。
mAdapter = new MyRecyclerViewAdapter(list);
mRecyclerView.setAdapter(mAdapter);
4.adapter中item的定義
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/item_tx"
android:layout_width="match_content"
android:layout_height="wrap_content"
android:gravity="center"
android:padding="10dp"
android:layout_gravity="center_horizontal"
android:text="Item"/>
</LinearLayout>
5.adapter的配置(重要部分)
public class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewAdapter.ViewHolder> {
private List<String> list;
public MyAdapter(List<String> list) {
this.list = list;
}
@Override
public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_base_use, parent, false);
MyAdapter.ViewHolder viewHolder = new MyAdapter.ViewHolder(view);
return viewHolder;
}
@Override
public void onBindViewHolder(MyAdapter.ViewHolder holder, int position) {
holder.mText.setText(list.get(position));
}
@Override
public int getItemCount() {
return list.size();
}
class ViewHolder extends RecyclerView.ViewHolder {
TextView mText;
ViewHolder(View itemView) {
super(itemView);
mText = itemView.findViewById(R.id.item_tx);
}
}
}
這個時候就可以運行出來了。
6.另外也可以用別的方式更換布局
設置水平布局,這里設置的是水平方向的,也可以設置成VERTICAL水平的。
mRecyclerView.setLayoutManager(new LinearLayoutManager(this, LinearLayoutManager.HORIZONTAL, false));
設置網(wǎng)格布局,這里的3,可以設置為3列。
mRecyclerView.setLayoutManager(new GridLayoutManager(this, 3));
設置瀑布流布局,這個一般是用來顯示那些item高度不一的布局的
mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.VERTICAL));
7.設置分割線
通過下面的方法就可以添加分割線,不過添加的是系統(tǒng)默認的,高度為2px,顏色為灰色。
mRecyclerView.addItemDecoration(new RecycleViewDivider(mContext, LinearLayoutManager.VERTICAL));
可以添加自定義drawable的分割線
mRecyclerView.addItemDecoration(new RecycleViewDivider(
mContext, LinearLayoutManager.VERTICAL, R.drawable.divider_mileage));
添加自定義分割線的高度和顏色
mRecyclerView.addItemDecoration(new RecycleViewDivider(
mContext, LinearLayoutManager.VERTICAL, 10, getResources().getColor(R.color.divide_gray_color)));
OK,這一章先講這么多,下一章介紹一下recycleView的點擊事件的處理。