Android RecyclerView 使用方法:垂直、横向、瀑布流
生活随笔
收集整理的這篇文章主要介紹了
Android RecyclerView 使用方法:垂直、横向、瀑布流
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
說明:
????RecyclerView 使用好處:無感知刷新,局部刷新,性能提升。
? ? 這里是純凈的RecyclerView,有一篇能添加頭部的RecyclerView:Android RecyclerView添加Header頭部
代碼:
? ? 0.添加引用
dependencies { compile 'com.android.support:recyclerview-v7:24.2.1' }? ? 1.Activity中
private RecyclerView rec_column; private List<TwoLevelColumnBean> twoLevelColumnBeenList = new ArrayList<TwoLevelColumnBean>(); private SearchHomeColumnAdapter searchHomeColumnAdapter;--- rec_column = (RecyclerView) findViewById(R.id.rec_column); ---//LinearLayoutManager 線性布局 LinearLayoutManager layoutmanager = new LinearLayoutManager(getActivity()); layoutmanager.setOrientation(LinearLayoutManager.HORIZONTAL);//列表橫向顯示 //SearchHomeColumnAdapter Adapter適配器 searchHomeColumnAdapter = new SearchHomeColumnAdapter(twoLevelColumnBeenList) {@Overridepublic void setColumn(String column) {category = column;refreshLayout.autoRefresh();searchHomeColumnAdapter.notifyDataSetChanged();} }; rec_column.setLayoutManager(layoutmanager); rec_column.setAdapter(searchHomeColumnAdapter);- 垂直樣式(和ListView相似)設置? ?:
- 左右樣式(和GridView相似)設置:
????????只用把LinearLayoutManager變成GridLayoutManager即可
GridLayoutManager layoutmanager= new GridLayoutManager(context, 4);//4表示4列- ? ? 瀑布流樣式(和GridView一樣,但是是瀑布流樣式)設置:
2、布局文件xml
<android.support.v7.widget.RecyclerViewandroid:id="@+id/rec_column"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_weight="1" />? ? 3、SearchHomeColumnAdapter Adapter適配器
package briefer.pet.adapter;import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView;import java.util.List;import briefer.pet.R; import briefer.pet.bean.TwoLevelColumnBean;/*** 發現-二級欄目* Created by zst on 2018/4/4.*/public abstract class SearchHomeColumnAdapter extends RecyclerView.Adapter<SearchHomeColumnAdapter.ViewHolder> {private List<TwoLevelColumnBean> list;private int selectId = 0;public SearchHomeColumnAdapter(List<TwoLevelColumnBean> list) {this.list = list;}@Overridepublic ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_search_column, parent, false);return new ViewHolder(view);}@Overridepublic void onBindViewHolder(ViewHolder holder, final int position) {holder.tv_column.setText(list.get(position).getColumn());holder.tv_column.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {selectId = position;setColumn(list.get(position).getColumn());}});if (position == selectId) {holder.tv_column.setBackgroundResource(R.drawable.bg_status_check);} else {holder.tv_column.setBackgroundResource(R.drawable.bg_status_normal);}}@Overridepublic int getItemCount() {return list.size();}public static class ViewHolder extends RecyclerView.ViewHolder {TextView tv_column;public ViewHolder(View view) {super(view);tv_column = (TextView) view.findViewById(R.id.tv_column);}}public abstract void setColumn(String column); }? ? 4、適配器布局文件xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="@color/white"android:orientation="horizontal"><TextViewandroid:id="@+id/tv_column"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginRight="10dp"android:background="@drawable/bg_status_normal"android:text="欄目名"android:textSize="12sp" /> </LinearLayout>?擴展
? ? 1、RecyclerView 數據刷新的幾種方式
?
- 刷新全部可見的item,notifyDataSetChanged()
- 刷新指定item,notifyItemChanged(int)
- 從指定位置開始刷新指定個item,notifyItemRangeChanged(int,int)
- 插入、移動一個并自動刷新,notifyItemInserted(int)、notifyItemMoved(int)、notifyItemRemoved(int)
- 局部刷新,notifyItemChanged(int, Object)
?
總結
以上是生活随笔為你收集整理的Android RecyclerView 使用方法:垂直、横向、瀑布流的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: express框架项目搭建
- 下一篇: 基于 Isolation Forest