2016-03-31 5 views
-1

Я пытаюсь создать приложение с макетом табуляции, и на одной из вкладок я хочу создать 2 recyclerviews, но только 1 будет отображаться на экране сразу. Данные для 1 recyclerview загружаются из Интернета в начале приложения, а данные для второго - вниз, после нажатия кнопки на экране. Когда загружаются данные для второго recyclerView, отображается recyclerView, но он лагги. Когда я скрываю второй recyclerView (один downlaoded с нажатием кнопки), а затем снова показываю его без данных downlaoding, он работает нормально - вообще никаких лаг.
В этом упражнении много кода, поэтому я добавлю только несколько строк, если потребуется больше, я добавлю больше. Адаптер
Второго RecyclerView в:Откладывание recyclerview во фрагменте

private static class CommentsAdapter extends RecyclerView.Adapter<CommentsAdapter.ViewHolder> { 
     public CommentsAdapter() {} 

     @Override 
     public void onAttachedToRecyclerView(RecyclerView recyclerView) { 
      super.onAttachedToRecyclerView(recyclerView); 
     } 

     public static class ViewHolder extends RecyclerView.ViewHolder { 

      public TextView commentTitle; 
      public TextView commentText; 
      public TextView deleteComment; 
      public TextView commentRating; 
      public ImageView upVote; 
      public ImageView downVote; 

      public ViewHolder(View view) { 
       super(view); 
       ... 
      } 
     } 

     @Override 
     public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
      View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.comment, parent, false); 
      ViewHolder vh = new ViewHolder(v); 
      return vh; 
     } 

     @Override 
     public void onBindViewHolder(final ViewHolder holder, final int position) { 
      ... (a lot of code, but it's not the reason why recycler view is laggy) 
      }); 
     } 

     @Override 
     public int getItemCount() { 
      return titles.length; 
     } 
    } 

Для редактирования Оценки и удаление комментариев я использую залп и структуры такого же, как это ничего не отставать еще, так что я думаю, это не проблема.
Код для загрузки комментариев:

private void ReadComments() { 

     pDialog = new ProgressDialog(getActivity()); 
     pDialog.setMessage("Please wait, loading comments..."); 
     pDialog.setCancelable(true); 
     pDialog.setIndeterminate(false); 
     pDialog.show(); 
     Map<String, String> params = new Hashtable<String, String>(); 
     params.put("tag", tag + ""); 
     CustomJsonRequest request = new CustomJsonRequest(Request.Method.POST, url_get_comments, params, 
       new Response.Listener<JSONObject>() { 
        @Override 
        public void onResponse(JSONObject response) { 
         Log.d(TAG, response.toString()); 
         try { 
          jsonParser = response.toString(); 
          Log.d("Comments ", response.toString()); 
          news = response.getJSONArray("comments"); 
          if (!response.toString().contains("No products found")) { 
           titles = new String[news.length()]; 
           descs = new String[news.length()]; 
           ratings = new int[news.length()]; 
           pids = new int[news.length()]; 
           users = new String[news.length()]; 

           for (int i = 0; i < news.length(); i++) { 
            JSONObject c = news.getJSONObject(i); 
            titles[i] = c.getString("title"); 
            descs[i] = c.getString("desc"); 
            ratings[i] = c.getInt("rating"); 
            pids[i] = c.getInt("pid"); 
            users[i] = c.getString("user"); 
           } 
          } 
         } catch (JSONException e) { 
          e.printStackTrace(); 
         } 
         if (titles != null) { 
          if (titles.length == 0) { 
           noComments.setVisibility(View.VISIBLE); 
          } else { 
           CommentsAdapter commentsAdapter = new CommentsAdapter(); 
           commentsView.setAdapter(commentsAdapter); 
          } 
         } else { 
          noComments.setVisibility(View.VISIBLE); 
         } 
         pDialog.hide(); 
        } 
       }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       VolleyLog.d(TAG, "Error: " + error.getMessage()); 
       pDialog.hide(); 
      } 
     }); 
     request.setRetryPolicy(new DefaultRetryPolicy(DefaultRetryPolicy.DEFAULT_TIMEOUT_MS * 2, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); 
     AppController.getInstance().getRequestQueue().add(request); 
    } 

И это все, что делает что-нибудь с этим recyclerView.
Весь код, который вы можете найти на моем GitHub: https://github.com/LisSkis/HowItTastes
Файлы с RecyclerViews являются: HomeContent.java, recycler_view.xml

ответ

2

Устанавливается в recyclerView:

recyclerView.setNestedScrollingEnabled(false); 
Смежные вопросы