【发布时间】:2016-10-31 06:03:57
【问题描述】:
我想从服务器加载数据并显示到RecyclerView,对于连接库我使用Retrofit。在我的应用程序中,我检查互联网连接!如果连接加载数据,则显示其他布局。
我的代码:
boolean isConnected = ConnectivityReceiver.isConnected();
...
private void loadDataCheckNet() {
loadData(isConnected);
}
private void loadData(boolean isConnect) {
if (isConnect) {
Retrofit_ApiInterface apiInterface = Retrofit_ApiClient.getClient().create(Retrofit_ApiInterface.class);
Call<R_SearchModelResponse> call = apiInterface.getSearchResponse(searchText);
call.enqueue(new Callback<R_SearchModelResponse>() {
@Override
public void onResponse(Call<R_SearchModelResponse> call, Response<R_SearchModelResponse> response) {
if (response != null) {
models.addAll(response.body().getPosts());
mAdapter.notifyDataSetChanged();
if (mAdapter.getItemCount() > 0) {
search_recycler.setAdapter(mAdapter);
searchLoadLayout.setVisibility(View.GONE);
} else {
empty_layout.setVisibility(View.VISIBLE);
searchLoadLayout.setVisibility(View.GONE);
}
} else {
searchLoadLayout.setVisibility(View.VISIBLE);
TastyToast.makeText(context, "Error", TastyToast.LENGTH_LONG, TastyToast.ERROR);
}
mAdapter.notifyDataSetChanged();
searchCheckNet.setVisibility(View.GONE);
}
@Override
public void onFailure(Call<R_SearchModelResponse> call, Throwable t) {
Log.e("CatResponseError", "Error : " + t);
}
});
} else {
searchCheckNet.setVisibility(View.VISIBLE);
if (mAdapter != null) {
mAdapter.clear();
search_recycler.setAdapter(mAdapter);
}
searchCheckNetButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mAdapter.notifyDataSetChanged();
loadDataCheckNet();
}
});
}
}
当运行应用程序和isConnected到互联网应用程序是好的,加载数据非常好!但是当断开互联网并再次连接时,从服务器加载数据并再次重复!
例如:如果你有 3 个帖子,post#1,post#2,post#3 当连接到互联网时再次加载这三个帖子!帖子#1,帖子#2,帖子#3,帖子#1,帖子#2,帖子#3。
我该如何解决这个问题?谢谢大家
【问题讨论】:
标签: android retrofit2 android-json gson