私には問題があります。なぜ人は助けないのですか?私のアプリケーションでサーバーからのデータをAndroidのRecyclerViewにアップロードする方法
私は、負荷データを必要とrecyclerView
ため怠惰ローダーを使用しています。
私はロード・データのコードの下に書く:私は自分のアプリケーションにsearchViewを使用する必要があります
newsPageRecyclerView.setOnScrollListener(new EndlessRecyclerOnScrollListener(layoutManager) {
@Override
public void onLoadMore(int current_page) {
NewsSendData sendData = new NewsSendData();
sendData.setKey("");
InterfaceApi api = ApiClient.getClient().create(InterfaceApi.class);
Call<NewsResponse> call = api.getMainNews(sendData);
call.enqueue(new Callback<NewsResponse>() {
@Override
public void onResponse(Call<NewsResponse> call, Response<NewsResponse> response) {
if (response.body().getData().getNewsDatum() != null) {
newsAdapter.addNewItem(response.body().getData().getNewsDatum());
newsPageLoadLay.setVisibility(View.GONE);
}
}
@Override
public void onFailure(Call<NewsResponse> call, Throwable t) {
}
});
}
});
、およびI:
private void loadNews() {
NewsSendData sendData = new NewsSendData();
sendData.setKey("");
newsPageImageProgress.show();
InterfaceApi api = ApiClient.getClient().create(InterfaceApi.class);
Call<NewsResponse> call = api.getMainNews(sendData);
call.enqueue(new Callback<NewsResponse>() {
@Override
public void onResponse(Call<NewsResponse> call, Response<NewsResponse> response) {
if (response.body().getData().getNewsDatum() != null) {
newModel.clear();
newModel.addAll(response.body().getData().getNewsDatum());
newsAdapter.notifyDataSetChanged();
newsPageRecyclerView.setAdapter(newsAdapter);
}
}
@Override
public void onFailure(Call<NewsResponse> call, Throwable t) {
});
そしてrecyclerView
ために怠惰なローダーのコードの下に書きますユーザーがテキストを検索するときに、は前のデータを削除し、サーバーから新しいデータを表示するだけです(sの検索結果エバー)。が
newsSearchView.setOnQueryTextListener(new MaterialSearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(final String query) {
NewsSendData sendData = new NewsSendData();
sendData.setKey(query);
InterfaceApi api = ApiClient.getClient().create(InterfaceApi.class);
Call<NewsResponse> call = api.getMainNews(sendData);
call.enqueue(new Callback<NewsResponse>() {
@Override
public void onResponse(Call<NewsResponse> call, Response<NewsResponse> response) {
if (response.body().getData().getNewsDatum() != null) {
newModel.clear();
newModel.addAll(response.body().getData().getNewsDatum());
newsAdapter.notifyDataSetChanged();
newsPageRecyclerView.setAdapter(newsAdapter);
newsPageImageProgress.hide();
toolbarTitleTxt.setText(query);
}
}
@Override
public void onFailure(Call<NewsResponse> call, Throwable t) {
});
IはのonCreate()活性のに上記のコードを書く:検索結果の
は、このコードを使用することです。
上記のコードを使用する場合は、サーバーから多くのデータを表示してください。例えば
:私はときに、検索テキストは、私にPOSTMAN中2つのデータを示すが、自分のアプリケーションで件のデータのこの2データトップを示し、この2つのデータの下に他のデータを示しています。
遅延ローダーコードを削除すると、私の問題は修正され、この2つのデータが表示されますが、遅延ローダーを追加するともう一度データが表示されます。
どうすればこのバグを修正できますか?助けてください