title: How to set Layout to RecyclerView in android
body: <p>I want to load data from server and show in my application (<code>RecyclerView</code>), for this job, when the application starts it shows 10 posts and when scrolling <code>recyclerView</code> show another post .</p>
  
  <p>I write below codes but when get other 10 posts, <strong>not show</strong> loading layout! I want when get other 10 posts, first <strong>show loading</strong> layout then show other 10 <strong>posts</strong>!</p>
  
  <p>For connect to internet I use <strong><code>Retrofit v2</code></strong> and for custom <code>Endless</code> methos for <code>recyclerView</code> I use this class : <a href="https://gist.github.com/ssinss/e06f12ef66c51252563e#file-endlessrecycleronscrolllistener-java" rel="nofollow">EndLess Class</a></p>
  
  <p><strong>My Activity codes:</strong></p>
  
  <pre><code>public class Category_page extends AppCompatActivity implements ConnectivityReceiver.ConnectivityReceiverListener {
  
      private static final long RIPPLE_DURATION = 250;
      private Toolbar toolbar;
      private TextView toolbar_title;
      private ImageView toolbar_menuImage;
      private Button categoryCheckNet_button;
      private RelativeLayout root;
      private CategoryAdapter mAdapter;
      private RecyclerView cat_recyclerView;
      private LinearLayoutManager mLayoutManager;
      private RelativeLayout loadLayout, checkNetLayout;
      private String catTitle = "";
      private Integer catID;
      private Bundle bundle;
      private int pageCount = 1;
      private Context context;
  
      private List&lt;R_CatModel&gt; models;
  
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.category_page);
  
          // Hide StatusBar color
          getWindow().getDecorView().setSystemUiVisibility(
                  View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
  
          // Initializing
          context = Category_page.this;
          toolbar = (Toolbar) findViewById(R.id.category_toolbar);
          cat_recyclerView = (RecyclerView) findViewById(R.id.category_recycler);
          toolbar_title = (TextView) toolbar.findViewById(R.id.toolbar_pages_title);
          mLayoutManager = new LinearLayoutManager(this);
          root = (RelativeLayout) findViewById(R.id.category_root);
          loadLayout = (RelativeLayout) findViewById(R.id.category_empty_layout);
          checkNetLayout = (RelativeLayout) findViewById(R.id.category_checkInternet_layout);
          categoryCheckNet_button = (Button) checkNetLayout.findViewById(R.id.checkNet_button);
          // Toolbar
          setSupportActionBar(toolbar);
          if (toolbar != null) {
              getSupportActionBar().setTitle("");
          }
  
          // Receive Data
          bundle = getIntent().getExtras();
          catID = bundle.getInt("categoryID");
          if (bundle != null) {
              catTitle = bundle.getString("categoryTitle");
          }
          if (catTitle != null) {
              toolbar_title.setText(catTitle);
          }
  
          // Load Data
          loadData();
  
          // Load Progress
          loadLayout.setVisibility(View.VISIBLE);
  
          // Menu
          View guillotineMenu = LayoutInflater.from(this).inflate(R.layout.menu_layout, null);
          root.addView(guillotineMenu);
          toolbar_menuImage = (ImageView) toolbar.findViewById(R.id.toolbar_pages_logo);
          new GuillotineAnimation.GuillotineBuilder(guillotineMenu, guillotineMenu.findViewById(R.id.menu_layout_image), toolbar_menuImage)
                  .setStartDelay(RIPPLE_DURATION)
                  .setActionBarViewForAnimation(toolbar)
                  .setClosedOnStart(true)
                  .build();
          // RecyclerView
          cat_recyclerView.setLayoutManager(mLayoutManager);
          cat_recyclerView.setHasFixedSize(true);
          cat_recyclerView.addOnScrollListener(new EndlessRecyclerOnScrollListener(mLayoutManager) {
              @Override
              public void onLoadMore(int current_page) {
  
                  Retrofit_ApiInterface apiInterface = Retrofit_ApiClient.getClient().create(Retrofit_ApiInterface.class);
                  Call&lt;R_CatModelResponse&gt; call = apiInterface.getCatMoreResponse(catID, current_page);
  
                  call.enqueue(new Callback&lt;R_CatModelResponse&gt;() {
                      @Override
                      public void onResponse(Call&lt;R_CatModelResponse&gt; call, Response&lt;R_CatModelResponse&gt; response) {
  
                          if (response != null) {
                              mAdapter.addNewItem(response.body().getCat_posts());
                              //loadLayout.setVisibility(View.GONE);
                          } else {
                              //loadLayout.setVisibility(View.VISIBLE);
                              Toast.makeText(Category_page.this, "Error 2", Toast.LENGTH_SHORT).show();
                              TastyToast.makeText(context, "خطایی رخ داده است", TastyToast.LENGTH_LONG, TastyToast.ERROR);
                          }
                      }
  
                      @Override
                      public void onFailure(Call&lt;R_CatModelResponse&gt; call, Throwable t) {
  
                      }
                  });
              }
          });
  
      }
  
      private void loadData() {
          boolean isConnected = ConnectivityReceiver.isConnected();
  
          retrofitData(isConnected);
      }
  
      private void retrofitData(boolean isConnect) {
  
          if (isConnect) {
              Retrofit_ApiInterface apiInterface = Retrofit_ApiClient.getClient().create(Retrofit_ApiInterface.class);
              Call&lt;R_CatModelResponse&gt; call = apiInterface.getCatResponse(catID);
  
              call.enqueue(new Callback&lt;R_CatModelResponse&gt;() {
                  @Override
                  public void onResponse(Call&lt;R_CatModelResponse&gt; call, Response&lt;R_CatModelResponse&gt; response) {
  
                      if (response != null) {
                          models = response.body().getCat_posts();
  
                          mAdapter = new CategoryAdapter(context, cat_recyclerView, models);
                          cat_recyclerView.setAdapter(mAdapter);
                          loadLayout.setVisibility(View.GONE);
  
                      } else {
                          //loadLayout.setVisibility(View.VISIBLE);
                          Toast.makeText(Category_page.this, "Error 2", Toast.LENGTH_SHORT).show();
                          TastyToast.makeText(context, "خطایی رخ داده است", TastyToast.LENGTH_LONG, TastyToast.ERROR);
                      }
  
                      checkNetLayout.setVisibility(View.GONE);
                  }
  
                  @Override
                  public void onFailure(Call&lt;R_CatModelResponse&gt; call, Throwable t) {
  
                      //loadLayout.setVisibility(View.VISIBLE);
                      //TastyToast.makeText(context, "لطفا برنامه را مجددا باز کنید", TastyToast.LENGTH_LONG, TastyToast.ERROR);
                      Toast.makeText(Category_page.this, "Error 2", Toast.LENGTH_SHORT).show();
                      //Cat_EmptyLayout.setVisibility(View.VISIBLE);
                      Log.e("CatResponseError", "Error : " + t);
  
                  }
              });
          } else {
              //loadLayout.setVisibility(View.GONE);
              checkNetLayout.setVisibility(View.VISIBLE);
              if (mAdapter != null) {
                  mAdapter.clear();
                  cat_recyclerView.setAdapter(mAdapter);
              }
              categoryCheckNet_button.setOnClickListener(new View.OnClickListener() {
                  @Override
                  public void onClick(View view) {
                      loadData();
                  }
              });
          }
      }
  
      public void post_back(View view) {
          onBackPressed();
      }
  
      @Override
      protected void attachBaseContext(Context newBase) {
          super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
      }
  
      @Override
      protected void onResume() {
          super.onResume();
          // register connection status listener
          MyApplication.getInstance().setConnectivityListener(this);
      }
  
      @Override
      public void onNetworkConnectionChanged(boolean isConnected) {
          retrofitData(isConnected);
      }
  }
  </code></pre>
  
  <p><strong>My Adapter codes:</strong></p>
  
  <pre><code>public class CategoryAdapter extends RecyclerView.Adapter {
  
      private List&lt;R_CatModel&gt; mDateSet;
      private Context mContext;
  
      private final int VIEW_ITEM = 1;
      private final int VIEW_PROG = 0;
  
      // The minimum amount of items to have below your current scroll position
      // before loading more.
      private int visibleThreshold = 10;
      private int lastVisibleItem, totalItemCount;
      private boolean loading;
      private OnLoadMoreListener onLoadMoreListener;
  
      public CategoryAdapter(Context context, RecyclerView recyclerView, List&lt;R_CatModel&gt; dataSet) {
          this.mContext = context;
          this.mDateSet = dataSet;
  
          if (recyclerView.getLayoutManager() instanceof LinearLayoutManager) {
  
              final LinearLayoutManager linearLayoutManager = (LinearLayoutManager) recyclerView
                      .getLayoutManager();
              recyclerView
                      .addOnScrollListener(new RecyclerView.OnScrollListener() {
                          @Override
                          public void onScrolled(RecyclerView recyclerView,
                                                 int dx, int dy) {
                              super.onScrolled(recyclerView, dx, dy);
                              totalItemCount = linearLayoutManager.getItemCount();
                              lastVisibleItem = linearLayoutManager
                                      .findLastVisibleItemPosition();
                              if (!loading
                                      &amp;&amp; totalItemCount &lt;= (lastVisibleItem + visibleThreshold)) {
                                  // End has been reached
                                  // Do something
                                  if (onLoadMoreListener != null) {
                                      onLoadMoreListener.onLoadMore();
                                  }
                                  loading = true;
                              }
                          }
                      });
          }
      }
  
      @Override
      public int getItemViewType(int position) {
          return mDateSet.get(position) != null ? VIEW_ITEM : VIEW_PROG;
      }
  
      @Override
      public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
  
          RecyclerView.ViewHolder vh;
          if (viewType == VIEW_ITEM) {
              View v = LayoutInflater.from(parent.getContext()).inflate(
                      R.layout.post_card_layout, parent, false);
  
              vh = new DataViewHolder(v);
          } else {
              View v = LayoutInflater.from(parent.getContext()).inflate(
                      R.layout.progressbar_item, parent, false);
  
              vh = new ProgressViewHolder(v);
          }
          return vh;
      }
  
      @Override
      public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
  
          if (holder instanceof DataViewHolder) {
              ((DataViewHolder) holder).main_post_title.setText(Html.fromHtml(mDateSet.get(position).getTitle()));
  
              Glide.with(mContext)
                      .load(mDateSet.get(position).getThumbnail_images().getMedium().getUrl())
                      .placeholder(R.drawable.post_image)
                      .crossFade()
                      .override(600, 350)
                      .into(((DataViewHolder) holder).main_post_image);
  
              ((DataViewHolder) holder).main_post_content.setText(Html.fromHtml(mDateSet.get(position).getContent()));
  
              // Convert Date ////////
              String date = mDateSet.get(position).getDate();
              String[] parts = date.split(" ");
              String datePart = parts[0];
              String timePart = parts[1];
  
              int year;
              int month;
              int day;
  
              String[] dateParts = datePart.split("-");
              year = Integer.parseInt(dateParts[0]);
              month = Integer.parseInt(dateParts[1]);
              day = Integer.parseInt(dateParts[2]);
  
              JalaliCalendar.YearMonthDate georgianDate = new JalaliCalendar.YearMonthDate(year, month, day);
              JalaliCalendar.YearMonthDate JalaliDate = JalaliCalendar.gregorianToJalali(georgianDate);
              String jalaliDateTime = JalaliDate.toString();
  
              ((DataViewHolder) holder).main_dateTime.setText(jalaliDateTime);
              ////////////////////////
  
              ((DataViewHolder) holder).main_author.setText(Html.fromHtml(mDateSet.get(position).getCatAuthor().getAuthorName()));
              ((DataViewHolder) holder).main_author.setOnClickListener(new View.OnClickListener() {
                  @Override
                  public void onClick(View v) {
                      R_CatModel model = mDateSet.get(position);
                      v.getContext().startActivity(new Intent(v.getContext(), Profile_page.class));
                      //.putExtra("author", model.getAuthor())
                      //.putExtra("authorID", model.getAuthorID())
                      //.putExtra("authorStatus", model.getAuthorStatus()));
                  }
              });
  
              ((DataViewHolder) holder).main_category.setText(Html.fromHtml(String.valueOf(mDateSet.get(position).getCategories().get(0).getCatTitle())));
              ((DataViewHolder) holder).main_category.setTextColor(mContext.getResources().getColor(R.color.colorAccent));
  
              ((DataViewHolder) holder).main_post_image.setOnClickListener(new View.OnClickListener() {
                  @Override
                  public void onClick(View v) {
                      int pos = holder.getPosition();
                      R_CatModel model = mDateSet.get(pos);
                      v.getContext().startActivity(new Intent(v.getContext(), PostShow_page.class)
                              .putExtra("title", model.getTitle())
                              .putExtra("image", model.getThumbnail())
                              .putExtra("content", model.getContent())
                              .putExtra("dateTime", model.getDate())
                              //.putExtra("author", model.getAuthor())
                              .putExtra("category", model.getTitle()));
  
                  }
              });
  
          } else {
              ((ProgressViewHolder) holder).progressBar.setVisibility(View.VISIBLE);
          }
      }
  
      public void setLoaded() {
          loading = false;
      }
  
      @Override
      public int getItemCount() {
          return mDateSet.size();
      }
  
      public void setOnLoadMoreListener(OnLoadMoreListener onLoadMoreListener) {
          this.onLoadMoreListener = onLoadMoreListener;
      }
  
      public void remove(int position) {
          mDateSet.remove(position);
          notifyItemRemoved(position);
      }
  
      public void clear() {
          mDateSet.clear();
          notifyDataSetChanged();
      }
  
      public void addNewItem(List&lt;R_CatModel&gt; newContent) {
          int start = this.mDateSet.size();//contents is a List of your items initialize it your constructor
          int end = newContent.size();
          mDateSet.addAll(newContent);
          notifyItemRangeInserted(start + 1, end);
      }
  
  
      public void add(List&lt;R_CatModel&gt; models) {
          mDateSet.addAll(models);
          notifyDataSetChanged();
      }
  
      public void update(List&lt;R_CatModel&gt; models) {
          mDateSet.clear();
          mDateSet.addAll(models);
          notifyDataSetChanged();
      }
  
      public class DataViewHolder extends RecyclerView.ViewHolder {
  
          private TextView main_post_title, main_post_content, main_dateTime, main_author, main_category;
          private ImageView main_post_image;
  
          public DataViewHolder(final View itemView) {
              super(itemView);
  
              main_post_title = (TextView) itemView.findViewById(R.id.post_content_title);
              main_post_image = (ImageView) itemView.findViewById(R.id.post_picture_image);
              main_post_content = (TextView) itemView.findViewById(R.id.post_content_text);
              main_dateTime = (TextView) itemView.findViewById(R.id.post_date_text);
              main_author = (TextView) itemView.findViewById(R.id.post_name_text);
              main_category = (TextView) itemView.findViewById(R.id.post_category_text);
          }
      }
  
      public static class ProgressViewHolder extends RecyclerView.ViewHolder {
          public AVLoadingIndicatorView progressBar;
  
          public ProgressViewHolder(View v) {
              super(v);
              progressBar = (AVLoadingIndicatorView) v.findViewById(R.id.avloadingIndicatorView);
          }
      }
  }
  </code></pre>
  
  <p><strong>My Json :</strong> </p>
  
  <pre><code>{
      "status": "ok",
      "count": 9,
      "pages": 3,
      "category": {
          "id": 1,
          "slug": "%d8%b3%d8%b1%da%af%d8%b1%d9%85%db%8c",
          "title": "\u0633\u0631\u06af\u0631\u0645\u06cc",
          "description": "\u062a\u0648\u06cc \u0627\u06cc\u0646 \u06a9\u0644\u0648\u0646\u06cc \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0648\u0627\u0633\u0647 \u0633\u0631\u06af\u0631\u0645 \u0628\u0648\u062f\u0646 \u0647\u0633\u062a. \u067e\u0633 \u0628\u062f\u0648 \u0628\u0631\u0648 \u062a\u0648\u0634",
          "parent": 0,
          "post_count": 29
      },
      "posts": [{
          "id": 85,
          "type": "post",
          "slug": "%d8%b9%d9%86%d9%88%d8%a7%d9%86-%d8%b3%d9%88%d9%85-%d8%a8%d8%b1%d8%a7%db%8c-%d8%b1%d9%81%d8%b1%d8%b4",
          "url": "http:\/\/tellfa.com\/tafrihgah\/?p=85",
          "status": "publish",
          "title": "\u0639\u0646\u0648\u0627\u0646 \u0633\u0648\u0645 \u0628\u0631\u0627\u06cc \u0631\u0641\u0631\u0634",
          "title_plain": "\u0639\u0646\u0648\u0627\u0646 \u0633\u0648\u0645 \u0628\u0631\u0627\u06cc \u0631\u0641\u0631\u0634",
          "content": "&lt;p&gt;\u062f\u06cc\u06af\u0647 \u0639\u0635\u0628\u0627\u0646\u06cc \u0634\u062f\u0645\u060c \u0686\u0631\u0627 \u0631\u0641\u0631\u0634 \u0646\u0645\u06cc\u06a9\u0646\u0647! :@&lt;\/p&gt;\n",
          "excerpt": "&lt;p&gt;\u062f\u06cc\u06af\u0647 \u0639\u0635\u0628\u0627\u0646\u06cc \u0634\u062f\u0645\u060c \u0686\u0631\u0627 \u0631\u0641\u0631\u0634 \u0646\u0645\u06cc\u06a9\u0646\u0647! :@&lt;\/p&gt;\n",
          "date": "2016-04-20 15:02:26",
          "modified": "2016-04-20 15:02:26",
          "categories": [{
              "id": 1,
              "slug": "%d8%b3%d8%b1%da%af%d8%b1%d9%85%db%8c",
              "title": "\u0633\u0631\u06af\u0631\u0645\u06cc",
              "description": "\u062a\u0648\u06cc \u0627\u06cc\u0646 \u06a9\u0644\u0648\u0646\u06cc \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0648\u0627\u0633\u0647 \u0633\u0631\u06af\u0631\u0645 \u0628\u0648\u062f\u0646 \u0647\u0633\u062a. \u067e\u0633 \u0628\u062f\u0648 \u0628\u0631\u0648 \u062a\u0648\u0634",
              "parent": 0,
              "post_count": 29
          }],
          "tags": [],
          "author": {
              "id": 1,
              "slug": "tellfa",
              "name": "\u0645\u062d\u0645\u062f",
              "first_name": "",
              "last_name": "",
              "nickname": "\u0645\u062d\u0645\u062f",
              "url": "http:\/\/codesaz.com",
              "description": "\u0627\u06cc\u0646 \u0632\u0646\u062f\u06af\u06cc \u0646\u0627\u0645\u0647 \u0645\u0646 \u0627\u0633\u062a",
              "avatar": "76"
          },
          "comments": [],
          "attachments": [{
              "id": 86,
              "url": "http:\/\/tellfa.com\/tafrihgah\/wp-content\/uploads\/2016\/04\/WallpapersMania_vol119-024.jpg",
              "slug": "wallpapersmania_vol119-024",
              "title": "[WallpapersMania]_vol119-024",
              "description": "",
              "caption": "",
              "parent": 85,
              "mime_type": "image\/jpeg",
              "images": {
                  "full": {
                      "url": "http:\/\/tellfa.com\/tafrihgah\/wp-content\/uploads\/2016\/04\/WallpapersMania_vol119-024.jpg",
                      "width": 1680,
                      "height": 1050
                  },
                  "thumbnail": {
                      "url": "http:\/\/tellfa.com\/tafrihgah\/wp-content\/uploads\/2016\/04\/WallpapersMania_vol119-024-150x150.jpg",
                      "width": 150,
                      "height": 150
                  },
                  "medium": {
                      "url": "http:\/\/tellfa.com\/tafrihgah\/wp-content\/uploads\/2016\/04\/WallpapersMania_vol119-024-300x188.jpg",
                      "width": 300,
                      "height": 188
                  },
                  "medium_large": {
                      "url": "http:\/\/tellfa.com\/tafrihgah\/wp-content\/uploads\/2016\/04\/WallpapersMania_vol119-024-768x480.jpg",
                      "width": 768,
                      "height": 480
                  }
              }
          }],
          "comment_count": 0,
          "comment_status": "open",
          "thumbnail": "http:\/\/tellfa.com\/tafrihgah\/wp-content\/uploads\/2016\/04\/WallpapersMania_vol119-024-150x150.jpg",
          "custom_fields": {},
          "thumbnail_size": "thumbnail",
          "thumbnail_images": {
              "full": {
                  "url": "http:\/\/tellfa.com\/tafrihgah\/wp-content\/uploads\/2016\/04\/WallpapersMania_vol119-024.jpg",
                  "width": 1680,
                  "height": 1050
              },
              "thumbnail": {
                  "url": "http:\/\/tellfa.com\/tafrihgah\/wp-content\/uploads\/2016\/04\/WallpapersMania_vol119-024-150x150.jpg",
                  "width": 150,
                  "height": 150
              },
              "medium": {
                  "url": "http:\/\/tellfa.com\/tafrihgah\/wp-content\/uploads\/2016\/04\/WallpapersMania_vol119-024-300x188.jpg",
                  "width": 300,
                  "height": 188
              },
              "medium_large": {
                  "url": "http:\/\/tellfa.com\/tafrihgah\/wp-content\/uploads\/2016\/04\/WallpapersMania_vol119-024-768x480.jpg",
                  "width": 768,
                  "height": 480
              }
          }
      }
  </code></pre>
  
  <p>How can I show loading layout when get other 10 posts? <br></p>