Я пытаюсь создать приложение с макетом табуляции, и на одной из вкладок я хочу создать 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