查看: 614|回复: 0

[手机开发] Android RecyclerView加载两种布局的方法

发表于 2017-8-1 08:00:04

当RecyclerView有下拉刷新时,有时候设计图上,体现出来的列表有头部布局,这可以通过Adapter实现加载多套布局就可以,这里以加载两种布局为例说明。

先看看Adapter的代码:

  1. import android.annotation.SuppressLint;
  2. import android.content.Context;
  3. import android.support.v7.widget.RecyclerView;
  4. import android.view.LayoutInflater;
  5. import android.view.View;
  6. import android.view.ViewGroup;
  7. import android.widget.BaseAdapter;
  8. import com.alvin.R;
  9. import java.util.ArrayList;
  10. import java.util.List;
  11. public class MainListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>{
  12. private List<Data> list;
  13. private ArrayList<ItemEntity> jdList;
  14. private Context context;
  15. public MainListAdapter(List<Data> list,ArrayList<ItemEntity> jdList, Context context) {
  16. this.list = list;
  17. this.jdList = jdList;
  18. this.context = context;
  19. }
  20. @Override
  21. public int getItemViewType(int position) {
  22. return list.get(position).getShowType();
  23. }
  24. @Override
  25. public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
  26. if(viewType==1){
  27. View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.layout_header_main_list,parent,false);
  28. return new HeaderHolder(view);
  29. }else{
  30. View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_list_main,parent,false);
  31. return new ViewHolderItem(view);
  32. }
  33. }
  34. @Override
  35. public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
  36. if(holder instanceof HeaderHolder){
  37. final HeaderHolder headerHolder = (HeaderHolder) holder;
  38. //TODO 实现相关逻辑
  39. }else if(holder instanceof ViewHolderItem){
  40. }
  41. }
  42. @Override
  43. public int getItemCount() {
  44. return list.size();
  45. }
  46. private class HeaderHolder extends RecyclerView.ViewHolder{
  47. HeaderHolder(View itemView) {
  48. super(itemView);
  49. }
  50. }
  51. private class ViewHolderItem extends RecyclerView.ViewHolder{
  52. ViewHolderItem(View itemView) {
  53. super(itemView);
  54. }
  55. }
  56. }
复制代码

getItemViewType()这个返回的是列表当前布局类型,在Adapter加载布局时,对齐进行判断,也就是onBindViewHolder()方法中进行相应的判断逻辑实现。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持程序员之家。



回复

使用道具 举报