RecyclerView多条目展示
来源:互联网 发布:造价师网络培训哪个好 编辑:程序博客网 时间:2024/06/05 11:41
我也不太懂这个代码的基本意思,有的地方还有疑惑,先把代码粘上后期再修改批注。
需要添加的依赖
compile 'com.android.support:recyclerview-v7:26.0.0-alpha1' compile 'com.github.bumptech.glide:glide:4.0.0'
MainActivity类
public class MainActivity extends AppCompatActivity { private List<Moudle> list = new ArrayList<>(); RecyclerView recyclerView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); recyclerView = (RecyclerView) findViewById(R.id.recyclerview3); for (int i = 0; i < 30; i++) { Moudle mon = new Moudle(); mon.setName("惊悚故事" + i); mon.setTitle("Hello" + i); mon.setSort("http://cover2.u17i.com/2017/07/18899201_1499070616_3js3vV532Fev.sbig.jpg?1499421235"); mon.setType(i); list.add(mon); } final Myadapter adapter = new Myadapter(list); GridLayoutManager layoutManager = new GridLayoutManager(this, 12); layoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() { @Override public int getSpanSize(int position) { int itemviewType = adapter.getItemViewType(position); switch (itemviewType) { case 0: return 12; case 1: return 4; case 2: return 4; case 3: return 4; case 4: return 4; case 5: return 6; case 6: return 6; case 7: return 6; default: return 6; } } }); LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this); recyclerView.setLayoutManager(layoutManager); recyclerView.setAdapter(adapter); }}
RecyclerView的适配器类
public class Myadapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { List<Moudle> list; public Myadapter(List<Moudle> list) { this.list = list; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { switch (viewType) { case 0: return new ViewHolderOne(getView(parent, R.layout.recycler)); case 1: return new ViewHolderTwo(getView(parent, R.layout.recycler2)); case 2: return new ViewHolderTwo(getView(parent, R.layout.recycler2)); case 3: return new ViewHolderTwo(getView(parent, R.layout.recycler2)); case 4: return new ViewHolderTwo(getView(parent, R.layout.recycler2)); case 5: return new ViewHolderTwo(getView(parent, R.layout.recycler2)); case 6: return new ViewHolderTwo(getView(parent, R.layout.recycler2)); case 7: return new ViewHolderTwo(getView(parent, R.layout.recycler2)); default: return new ViewHolderTwo(getView(parent, R.layout.recycler2)); } } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { if (holder instanceof ViewHolderOne) { ((ViewHolderOne) holder).textView.setText(list.get(position).name); } else if (holder instanceof ViewHolderTwo) { ((ViewHolderTwo) holder).title.setText(list.get(position).title); ((ViewHolderTwo) holder).sort.setText(list.get(position).name); String picture = list.get(position).getSort(); Glide.with(((ViewHolderTwo) holder).imageView).load(picture).into(((ViewHolderTwo) holder).imageView); } } @Override public int getItemCount() { return list == null ? 0 : list.size(); } @Override public int getItemViewType(int position) { return list.get(position).type % 8; } private View getView(ViewGroup parent, int recycler) { View inflate = LayoutInflater.from(parent.getContext()).inflate(recycler, parent, false); return inflate; } static class ViewHolderOne extends RecyclerView.ViewHolder { TextView textView; public ViewHolderOne(View itemView) { super(itemView); textView = (TextView) itemView.findViewById(R.id.text); } } static class ViewHolderTwo extends RecyclerView.ViewHolder { TextView title, sort; ImageView imageView; public ViewHolderTwo(View itemView) { super(itemView); imageView = (ImageView) itemView.findViewById(R.id.images); title = (TextView) itemView.findViewById(R.id.title); sort = (TextView) itemView.findViewById(R.id.sort); } }}
Moudle 属性类
public class Moudle { public String title; public String name; public String sort; public int type; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSort() { return sort; } public void setSort(String sort) { this.sort = sort; } public void setType(int type) { this.type = type; }}
activity_main布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" tools:context="com.example.recyclerview3.MainActivity"> <!--注意高设置成自适应,设置成充满的话一行就占一页啦--> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerview3" android:layout_width="match_parent" android:layout_height="wrap_content"/></LinearLayout>
recycler布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content"><TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="ddd"/></LinearLayout>
recycler2布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="wrap_content"><TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="dfdf" android:textSize="20sp"/> <TextView android:id="@+id/sort" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" android:text="dfdf"/> <ImageView android:id="@+id/images" android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout>
阅读全文
0 0
- RecyclerView多条目展示
- RecyclerView多条目展示
- RecyclerView的多条目展示
- recyclerView多条目展示,ArgbEvaluator颜色渐变
- MVP+RxJava+Retryfit+RecyclerView多条目展示
- OkHttp+RecyclerView多条目展示数据
- OkHttp请求数据到RecyclerView多条目展示
- RecyclerView的多条目展示,使用OkHttp解析数据
- ListView多条目展示
- ListView多条目展示
- 多条目展示
- listview多条目展示
- listView 多条目展示
- ListView多条目展示
- listview多条目展示
- ListView多条目展示
- Xlistview多条目展示
- 多条目展示
- linux查看端口占用情况,并关闭端口占用
- Android Things入门-控制GPIO
- Codeforces Round #428 (Div. 2):A. Arya and Bran
- CSDN-markdown标签说明
- CSS居中
- RecyclerView多条目展示
- C# 序列化与反序列化
- 系统修复
- 工作中小细节总结(四)
- C语言函数库
- ubuntu 安装截图工具 Shutter,并设置快捷键 Ctrl+Alt+A
- LaTeX 在线编辑器(LaTeX online editors)
- MySQL学习笔记——20170812
- 递归、时间复杂度和空间复杂度