我正在尝试在RecyclerView的最后一项之后向下滚动时加载更多项目,但没有任何反应。它只在屏幕加载时调用一次。在没有任何反应的情况下,虽然我向下滚动&转到最后一项。
以下是我的代码
inspectionRecyclerView = (RecyclerView) view.findViewById(R.id.recyclerView_Inspections);
final LinearLayoutManager mLayoutManager = new LinearLayoutManager(getActivity());
inspectionRecyclerView.setLayoutManager(mLayoutManager);
inspectionRecyclerView.setOnScrollListener(new EndlessRecyclerOnScrollListener(
mLayoutManager) {
@Override
public void onLoadMore(int current_page) {
// do somthing...
Log.v("Call", "Load more");
//api call to load more items goes here
}
});
滚动零件代码
public abstract class EndlessRecyclerOnScrollListener extends
RecyclerView.OnScrollListener {
public String TAG = EndlessRecyclerOnScrollListener.class
.getSimpleName();
private int previousTotal = 0;
private boolean loading = true;
private int visibleThreshold = 5;
int firstVisibleItem, visibleItemCount, totalItemCount;
private int current_page = 1;
private LinearLayoutManager mLinearLayoutManager;
public EndlessRecyclerOnScrollListener(
LinearLayoutManager linearLayoutManager) {
this.mLinearLayoutManager = linearLayoutManager;
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
visibleItemCount = recyclerView.getChildCount();
totalItemCount = mLinearLayoutManager.getItemCount();
firstVisibleItem = mLinearLayoutManager.findFirstVisibleItemPosition();
if (loading) {
if (totalItemCount > previousTotal) {
loading = false;
previousTotal = totalItemCount;
}
}
if (!loading
&& (totalItemCount - visibleItemCount) <= (firstVisibleItem + visibleThreshold)) {
// End has been reached
// Do something
current_page++;
onLoadMore(current_page);
loading = true;
}
}
public abstract void onLoadMore(int current_page);
}
请帮帮我。
答案 0 :(得分:1)
如果有帮助,请检查一下
1)当我开始此活动时,我将服务器中的数据存储到名为activitiesData的集合中。
2)activitiesData现在拥有我想在RecyclerView中显示的数据。
3)我使用activitiesData填充RecyclerView。
4)现在您需要一个scrollListener来查看代码
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
}
@Override
public void onScrolled(final RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
//activitiesData is collection used to populate the recycler Adapter
activitiesData.remove(activitiesData.size() - 1);
recyclerViewAdapter.notifyItemRemoved(activitiesData.size());
// Make a networking call to get the data on page scrolled
//after you get response
recyclerViewAdapter.notifyDataSetChanged();
}
});
答案 1 :(得分:0)
我使用以下代码,它对我来说很好。在api调用完成后,不要忘记将加载值设置为FALSE。
public RecyclerView.OnScrollListener getOnScrollListener() {
return new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
if (dy > 0) {
visibleItemCount = lm.getChildCount();
totalItemCount = lm.getItemCount();
pastVisibleItem = lm.findFirstVisibleItemPosition();
if (!isLoading) {
if ((visibleItemCount + pastVisibleItem) >= totalItemCount) {
isLoading = true;
loadNextPage();
}
}
}
}
};
}
答案 2 :(得分:0)
private void CallVoiceSearchResultWebservice() {
final ProgressDialog pDialog = new ProgressDialog(this);
pDialog.setMessage("Verifying. Please Wait...");
pDialog.show();
String URL = "http://idot.co.in//android/voice-search";
RequestQueue queue = Volley.newRequestQueue(this);
StringRequest sr = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.e("Response", response);
pDialog.dismiss();
if (OFFSET == 0) {
voiceSearchArray.clear();
}
loading = true;
try {
JSONObject records = new JSONObject(response);
if (records.getString("status").equals("1")) {
JSONArray recordList = records.getJSONArray("recordList");
String image_base_url = records.getString("image_base_url");
for (int i = 0; i < recordList.length(); i++) {
JSONObject recordObj = recordList.getJSONObject(i);
ServiceModel serviceModel = new ServiceModel();
serviceModel.setPk_id(recordObj.getString("pk_id"));
serviceModel.setFullname(recordObj.getString("fullname"));
serviceModel.setEmail(recordObj.getString("email"));
serviceModel.setMobile(recordObj.getString("mobile"));
serviceModel.setBusiness_name(recordObj.getString("business_name"));
serviceModel.setAddress(recordObj.getString("address"));
serviceModel.setWebsite(recordObj.getString("website"));
serviceModel.setRating_cnt(recordObj.getString("rating_cnt"));
serviceModel.setPhoneno(recordObj.getString("phoneno"));
serviceModel.setPhoto(image_base_url + recordObj.getString("photo"));
voiceSearchArray.add(serviceModel);
}
ServiceAdapter.notifyDataSetChanged();
} else {
Toast.makeText(Home_Activity.this, "No more records Available.", Toast.LENGTH_SHORT).show();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("error", error.toString());
pDialog.dismiss();
if (error instanceof TimeoutError || error instanceof NoConnectionError) {
Toast.makeText(Home_Activity.this, "Sorry, Please Check your Internet Connection.",
Toast.LENGTH_LONG).show();
} else if (error instanceof AuthFailureError) {
Toast.makeText(Home_Activity.this, "Sorry, AuthFailureError.",
Toast.LENGTH_LONG).show();
//TODO
} else if (error instanceof ServerError) {
Toast.makeText(Home_Activity.this, "Sorry, ServerError.",
Toast.LENGTH_LONG).show();
//TODO
} else if (error instanceof NetworkError) {
Toast.makeText(Home_Activity.this, "Sorry, NetworkError.",
Toast.LENGTH_LONG).show();
//TODO
} else if (error instanceof ParseError) {
//TODO
}
// mPostCommentResponse.requestEndedWithError(error);
}
}) {
@Override
protected Map<String, String> getParams() {
Map<String, String> params = new HashMap<String, String>();
params.put("searchtext", VoiceSearch);
params.put("limit", "10");
params.put("offset", String.valueOf(OFFSET));
// params.put("utype", "");
Log.e("searchtext params", "searchtext params " + params.toString());
return params;
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put("Content-Type", "application/x-www-form-urlencoded");
return params;
}
};
queue.add(sr);
}
在oncreate中编写代码以设置滚动侦听器
text
方法是:
date
答案 3 :(得分:0)
package com.latest.share.chat.fragments;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.AttributeSet;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import com.latest.share.chat.MyApplication;
import com.latest.share.chat.R;
import com.latest.share.chat.activities.SearchActivity;
import com.latest.share.chat.adapters.PostViewAdapter;
import com.latest.share.chat.adapters.viewholders.Item;
import com.latest.share.chat.adapters.viewholders.MusicViewHolder;
import com.latest.share.chat.models.Footer;
import com.latest.share.chat.models.PostViewModel;
import com.latest.share.chat.utils.Config;
import com.latest.share.chat.utils.UtilMethods;
import com.volokh.danylo.visibility_utils.calculator.DefaultSingleItemCalculatorCallback;
import com.volokh.danylo.visibility_utils.calculator.ListItemsVisibilityCalculator;
import com.volokh.danylo.visibility_utils.calculator.SingleListViewItemActiveCalculator;
import com.volokh.danylo.visibility_utils.scroll_utils.RecyclerViewItemPositionGetter;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.IOException;
import java.util.ArrayList;
import okhttp3.MultipartBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.RequestBody;
import okhttp3.Response;
import static android.app.Activity.RESULT_OK;
/**
* A simple {@link Fragment} subclass.
*/
public class PostViewFragment extends Fragment {
private Context mContext;
private ArrayList<Item> list;
private ArrayList<Item> list1;
private ArrayList<Item> final_list;
private RecyclerView recyclerView;
private ProgressBar progressBar;
LinearLayoutManager mLayoutManager;
ListItemsVisibilityCalculator mVideoVisibilityCalculator;
private RecyclerViewItemPositionGetter mItemsPositionGetter;
private int mScrollState = AbsListView.OnScrollListener.SCROLL_STATE_IDLE;
boolean has_next_page = false;
int next_page_no = 1;
PostViewAdapter adapter;
public static final int POST_COMMENT_REQUEST = 201;
private String tag_name;
private String fragment_type;
private String fragment_extra;
private LinearLayout linear_search;
private SwipeRefreshLayout swipeContainer;
private TextView text_retry;
private LinearLayout linear_no_internet;
private TextView text_no_data;
private String following_id = "";
public PostViewFragment() {
// Required empty public constructor
}
public static Fragment Instance(String fragment_type, String fragment_extra) {
PostViewFragment fragment = new PostViewFragment();
Bundle bundle = new Bundle();
bundle.putString("fragment_extra", fragment_extra);
bundle.putString("fragment_type", fragment_type);
fragment.setArguments(bundle);
return fragment;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
fragment_extra = getArguments().getString("fragment_extra");
fragment_type = getArguments().getString("fragment_type");
assert fragment_type != null;
if (fragment_type.equalsIgnoreCase(Config.FRAGEMNT_TYPE_FAMOUS)) {
tag_name = "get_post_by_famous";
} else if (fragment_type.equalsIgnoreCase(Config.FRAGMENT_TYPE_FOLLOWERS)) {
tag_name = "get_posts_by_followers";
} else if (fragment_type.equalsIgnoreCase(Config.FRAGMENT_TYPE_SELF)) {
tag_name = "get_post_by_user";
following_id = fragment_extra;
} else if (fragment_type.equalsIgnoreCase(Config.FRAGMENT_TYPE_TAG)) {
tag_name = "get_post_by_tags";
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.fragment_post_view, container, false);
mContext = getActivity();
recyclerView = (RecyclerView) v.findViewById(R.id.recycler_post);
progressBar = (ProgressBar) v.findViewById(R.id.progressBar);
linear_search = (LinearLayout) v.findViewById(R.id.linear_search);
text_retry = (TextView) v.findViewById(R.id.text_retry);
linear_no_internet = (LinearLayout) v.findViewById(R.id.no_internet);
text_no_data = (TextView) v.findViewById(R.id.no_data_text);
if (tag_name.equalsIgnoreCase("get_post_by_famous")) {
linear_search.setVisibility(View.VISIBLE);
linear_search.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(mContext, SearchActivity.class);
startActivity(i);
}
});
} else {
linear_search.setVisibility(View.GONE);
}
swipeContainer = (SwipeRefreshLayout) v.findViewById(R.id.swipeContainer);
swipeContainer.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
new PostTask(String.valueOf(1)).execute(Config.POST_URL);
}
});
final_list = new ArrayList<>();
new PostTask(String.valueOf(next_page_no)).execute(Config.POST_URL);
mLayoutManager = new LinearLayoutManager(mContext);
recyclerView.setLayoutManager(mLayoutManager);
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
mScrollState = newState;
Log.d("scrolling1233_onScrollStateChanged", String.valueOf(newState));
if (list != null) {
if (newState == RecyclerView.SCROLL_STATE_IDLE && !list.isEmpty()) {
Log.d("scrolling1233_onScrollStateChanged", "onScrollStateChanged");
Log.d("scrolling1233_findFirstVisibleItemPosition",
String.valueOf(mLayoutManager.findFirstVisibleItemPosition()));
Log.d("scrolling1233_findLastVisibleItemPosition",
String.valueOf(mLayoutManager.findLastVisibleItemPosition()));
}
}
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
//super.onScrolled(recyclerView, dx, dy);
Log.d("scroll123_onScrolled", "onScrolled");
UtilMethods.LogMethod("scroll123_has_next_page", String.valueOf(has_next_page));
UtilMethods.LogMethod("scroll123_hasFooter", String.valueOf(hasFooter()));
if (has_next_page && !(hasFooter())) {
LinearLayoutManager manager = (LinearLayoutManager) recyclerView.getLayoutManager();
UtilMethods.LogMethod("scroll123_findLastCompletelyVisibleItemPosition",
String.valueOf(manager.findLastVisibleItemPosition()));
UtilMethods.LogMethod("scroll123_getItemCount",
String.valueOf(manager.getItemCount()));
if (manager.findLastVisibleItemPosition() == manager.getItemCount() - 2) {
UtilMethods.LogMethod("scroll1235_next_page_no",
String.valueOf(next_page_no));
UtilMethods.LogMethod("scroll1235_has_nextPage",
String.valueOf(has_next_page));
UtilMethods.LogMethod("scroll123_findLastCompletelyVisibleItemPosition",
String.valueOf(manager.findLastVisibleItemPosition()));
new PostTask(String.valueOf(next_page_no)).execute(Config.POST_URL);
}
}
}
});
return v;
}
@Override
public void onResume() {
super.onResume();
if (adapter != null)
adapter.notifyDataSetChanged();
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
// super.onActivityResult(requestCode, resultCode, data);
UtilMethods.LogMethod("kljlkc1234_", "djhjhkhkd");
if (resultCode == RESULT_OK) {
if (requestCode == POST_COMMENT_REQUEST) {
UtilMethods.LogMethod("kljlkc1234_", "djhjhkhkd");
}
}
}
@SuppressLint("StaticFieldLeak")
public class PostTask extends AsyncTask<String, Void, Integer> {
int result = 0;
boolean jerror;
String jmsg;
private String page_no;
public PostTask(String page_no) {
this.page_no = page_no;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
if (page_no.equalsIgnoreCase("1")) {
swipeContainer.setRefreshing(true);
} else {
list.add(new Footer());
final_list = list;
recyclerView.getAdapter().notifyItemInserted(final_list.size());
}
}
@Override
protected Integer doInBackground(String... params) {
RequestBody requestBody = null;
if (tag_name.equalsIgnoreCase("get_post_by_user")) {
requestBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("tag", "get_post_by_user")
.addFormDataPart("self_user_id", Config.SelfId)
.addFormDataPart("to_see_user_id", following_id)
.addFormDataPart("page_no", page_no)
.build();
UtilMethods.LogMethod("text3434_tag", "get_post_by_user");
UtilMethods.LogMethod("text3434_self_user_id", Config.SelfId);
UtilMethods.LogMethod("text3434_to_see_user_id", following_id);
} else if (tag_name.equalsIgnoreCase("get_posts_by_followers")) {
requestBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("tag", "get_posts_by_followers")
.addFormDataPart("user_id", Config.SelfId)
.addFormDataPart("page_no", page_no)
.build();
} else if (tag_name.equalsIgnoreCase("get_post_by_famous")) {
requestBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("tag", "get_post_by_famous")
.addFormDataPart("self_user_id", Config.SelfId)
.addFormDataPart("page_no", page_no)
.build();
} else if (tag_name.equalsIgnoreCase("get_post_by_tags")) {
requestBody = new MultipartBody.Builder()
.setType(MultipartBody.FORM)
.addFormDataPart("tag", "get_post_by_tags")
.addFormDataPart("self_user_id", Config.SelfId)
.addFormDataPart("page_no", page_no)
.addFormDataPart("post_tag", fragment_extra)
.build();
}
Request request = new Request.Builder()
.url(params[0])
.post(requestBody)
.build();
OkHttpClient client = new OkHttpClient();
try {
Response response = client.newCall(request).execute();
int status = response.networkResponse().code();
UtilMethods.LogMethod("response_status", String.valueOf(status));
if (status == 200) {
String json_string = response.body().string();
UtilMethods.LogMethod("response_res", json_string);
parseJson(json_string);
result = 1;
} else {
result = 0;
}
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
@Override
protected void onPostExecute(Integer integer) {
super.onPostExecute(integer);
if (mContext != null) {
swipeContainer.setRefreshing(false);
if (result == 1) {
if (!jerror) {
if (page_no.equalsIgnoreCase("1")) {
recyclerView.setVisibility(View.VISIBLE);
linear_no_internet.setVisibility(View.GONE);
text_no_data.setVisibility(View.GONE);
final_list = list;
adapter = new PostViewAdapter(mContext, final_list, following_id);
// recyclerView.getItemAnimator().setChangeDuration(0);
recyclerView.setAdapter(adapter);
if (list != null) {
if (!list.isEmpty()) {
// need to call this method from list view handler in order to have filled list
if (recyclerView != null) {
// recyclerView.post(new Runnable() {
// @Override
// public void run() {
// if (mContext != null) {
// mVideoVisibilityCalculator.onScrollStateIdle(
// mItemsPositionGetter,
// mLayoutManager.findFirstVisibleItemPosition(),
// mLayoutManager.findLastVisibleItemPosition());
// }
//
// }
// });
}
} else {
text_no_data.setVisibility(View.VISIBLE);
recyclerView.setVisibility(View.GONE);
linear_no_internet.setVisibility(View.GONE);
if (tag_name.equalsIgnoreCase("get_post_by_user")) {
text_no_data.setText("No Post Found.");
} else if (tag_name.equalsIgnoreCase("get_posts_by_followers")) {
text_no_data.setText("No Post Found.\n Follow more user to watch more media.");
} else if (tag_name.equalsIgnoreCase("get_post_by_famous")) {
text_no_data.setText("No Post Found.");
} else if (tag_name.equalsIgnoreCase("get_post_by_tags")) {
text_no_data.setText("No Post Found.");
}
}
}
} else {
int size = list.size();
list.remove(size - 1);
list.addAll(list1);
final_list = list;
// recyclerView.getAdapter().notifyItemRangeChanged(size - 1,
// list.size() - size);
recyclerView.getAdapter().notifyDataSetChanged();
}
} else {
Toast.makeText(mContext, jmsg, Toast.LENGTH_LONG).show();
}
} else {
if (page_no.equalsIgnoreCase("1")) {
recyclerView.setVisibility(View.GONE);
linear_no_internet.setVisibility(View.VISIBLE);
text_no_data.setVisibility(View.GONE);
text_retry.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
linear_no_internet.setVisibility(View.GONE);
new PostTask(String.valueOf(1)).execute(Config.POST_URL);
}
});
} else {
Toast.makeText(mContext, "No internet connection", Toast.LENGTH_LONG).show();
}
}
}
}
public void parseJson(String s) {
if (page_no.equalsIgnoreCase("1")) {
list = new ArrayList<>();
} else {
list1 = new ArrayList<>();
}
try {
JSONObject startingObject = new JSONObject(s);
jerror = startingObject.getBoolean("error");
if (!jerror) {
page_no = startingObject.getString("page_number");
has_next_page = startingObject.getBoolean("has_next_page");
if (has_next_page)
next_page_no = startingObject.getInt("next_page_no");
JSONArray allDataArray = startingObject.getJSONArray("all_data");
if (allDataArray.length() > 0) {
for (int i = 0; i < allDataArray.length(); i++) {
PostViewModel model = new PostViewModel();
JSONObject object = allDataArray.getJSONObject(i);
JSONObject userObject = object.getJSONObject("user_data");
model.setUser_id(userObject.getString("user_id"));
model.setUser_name(userObject.getString("user_name"));
model.setUser_gcm_id(userObject.getString("user_gcm_id"));
model.setProfile_pic(userObject.getString("profile_pic"));
model.setTotal_posts(userObject.getString("total_posts"));
model.setTotal_followers(userObject.getString("total_followers"));
model.setTotal_followings(userObject.getString("total_followings"));
model.setStatus(userObject.getString("status"));
Object a = userObject.get("following");
if (a instanceof String) {
model.setFollowing_type("Str");
model.setFollowing_string(userObject.getString("following"));
model.setFollowing(Boolean.parseBoolean(model.getFollowing_string()));
} else {
model.setFollowing_type("Bool");
model.setFollowing(userObject.getBoolean("following"));
model.setFollowing_string(String.valueOf(userObject.getBoolean("following")));
}
// model.setFollowing(userObject.getBoolean("following"));
model.setPoster_pic(userObject.getString("poster_pic"));
model.setShow_profile(userObject.getBoolean("show_profile"));
model.setBirth_date(userObject.getString("birth_date"));
model.setMobile_number(userObject.getString("mobile_number"));
model.setPrivacy_policy(userObject.getString("privacy_policy"));
model.setBlockedUser(userObject.getBoolean("is_blocked"));
JSONObject postObject = object.getJSONObject("post_data");
model.setPost_id(postObject.getString("post_id"));
model.setPost_message(postObject.getString("post_message"));
model.setPost_type(postObject.getString("post_type"));
model.setPost_path(postObject.getString("post_path"));
model.setPost_thumbnail(postObject.getString("post_thumbnail"));
model.setPost_tag(postObject.getString("post_tag"));
model.setCreated_at(postObject.getString("created_at"));
model.setTotal_likes(postObject.getString("total_likes"));
model.setTotal_comments(postObject.getString("total_comments"));
model.setPost_back_color_code(postObject.getString("post_back_color_code"));
model.setPost_back_image_id(postObject.getString("post_back_image_id"));
model.setIsSharingOn(postObject.getString("isSharingOn"));
model.setIsCommentsOn(postObject.getString("isCommentsOn"));
model.setPost_width(postObject.getString("post_width"));
model.setPost_height(postObject.getString("post_height"));
model.setIs_liked(postObject.getBoolean("is_liked"));
model.setLanguage(postObject.getString("post_language"));
model.setIs_notification_on(postObject.getBoolean("is_notification_on"));
if (model.getPost_tag().contains("18")) {
UtilMethods.LogMethod("post738239_18888", "ifff");
if (MyApplication.getInstance().
getPrefManager().getEighteenPlus()) {
if (page_no.equalsIgnoreCase("1")) {
list.add(model);
} else {
list1.add(model);
}
}
} else {
if (page_no.equalsIgnoreCase("1")) {
list.add(model);
} else {
list1.add(model);
}
}
}
} else {
}
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
@Override
public void onPause() {
super.onPause();
UtilMethods.LogMethod("recyclerView1234_music123", "pause");
if (MusicViewHolder.mp != null)
MusicViewHolder.mp.pause();
// UtilMethods.stopMediaPlayer();
}
@Override
public void onDetach() {
super.onDetach();
UtilMethods.LogMethod("recyclerView1234_onDetach", "onDetach");
}
private boolean hasFooter() {
if (list.size() > 0) {
return list.get(list.size() - 1) instanceof Footer;
} else {
return true;
}
}
}