Я хочу загружать 20 записей одновременно, а затем следующие 20 в виде переработчика и т. Д. Через залп, у меня около 100 тыс. Элементов в поиске, я много раз искал его, но не могу найти решение для залпа, все находятся в модификации. publi c класс SearchActivity расширяет AppCompatActivity {
private static final String TAG = MainActivity.class.getName();
private Button btnRequest;
Boolean isScrolling = false;
String name, mf_pnum, availability, image;
LinearLayoutManager manager;
private RequestQueue mRequestQueue;
private StringRequest mStringRequest;
private String url = "this is my url";
int currentItems, totalItems, scrollOutItems;
ProgressBar simpleProgressBar;
RecyclerView list;
ArrayList<SearchModel> items = new ArrayList<>();
SearchItemAdapter adapter;
SearchView searchView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search);
btnRequest = (Button) findViewById(R.id.click_button);
list = findViewById(R.id.list);
searchView = findViewById(R.id.search_view);
//final ProgressBar simpleProgressBar = new ProgressBar(this);
manager = new LinearLayoutManager(this);
manager.setOrientation(RecyclerView.VERTICAL);
list.setLayoutManager(manager);
adapter = new SearchItemAdapter(items);
list.setAdapter(adapter);
btnRequest.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// simpleProgressBar.setVisibility(View.VISIBLE);
sendAndRequestResponse();
}
});
}
private void sendAndRequestResponse() {
items.clear();
final String search = searchView.getQuery().toString();
url = "this is my url" + "terms=" + search + "&" + "search_by=keyword";
final ProgressBar simpleProgressBar = (ProgressBar) findViewById(R.id.simpleProgressBar);
//RequestQueue initialized
mRequestQueue = Volley.newRequestQueue(this);
//String Request initialized
mStringRequest = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject result = new JSONObject(response);
JSONArray products = result.getJSONArray("products");
for (int i = 0; i < products.length(); i++) {
JSONObject p = products.getJSONObject(i);
// JSONObject _source = p.getJSONObject("_source");
name = p.getString("name");
mf_pnum = p.getString("mf_pnum");
availability = p.getString("availability");
//String quantity = p.getJSONObject("quantity_all").getString("dk");
image = p.getString("images");
// JSONArray imagedk = images_all.getJSONArray("dk");
//String image = imagedk.getJSONObject(0).getString("original");
/* JSONArray prices = _source.getJSONObject("pricing_all").getJSONObject("dk").getJSONArray("ranges");
HashMap<String,String> price = new HashMap<>();
for(int j=0; j<prices.length(); j++){
JSONObject ob= prices.getJSONObject(j);
price.put(ob.getString("from"),ob.getString("price"));
}
// items.add(new SearchModel(name,image,mf_pnum,availability));
list.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
if (newState == AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL) {
isScrolling = true;
}
}
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
currentItems = manager.getChildCount();
totalItems = manager.getItemCount();
scrollOutItems = manager.findFirstVisibleItemPosition();
if (isScrolling && (currentItems + scrollOutItems == totalItems)) {
isScrolling = false;
fechData();
}
}
});
items.add(new SearchModel(name, image, mf_pnum, availability));
adapter.notifyDataSetChanged();
simpleProgressBar.setVisibility(View.GONE);
}
products = result.getJSONObject("content").getJSONArray("products");
for(int i=0; i<products.length(); i++){
JSONObject p = products.getJSONObject(i);
JSONObject _source = p.getJSONObject("_source");
String name = _source.getString("pnum");
String mf_pnum = _source.getString("mf_pnum");
String quantity = _source.getJSONObject("quantity_all").getString("dk");
JSONObject images_all = _source.getJSONObject("images_all");
JSONArray imagedk = images_all.getJSONArray("dk");
String image = imagedk.getJSONObject(0).getString("original");
JSONArray prices = _source.getJSONObject("pricing_all").getJSONObject("dk").getJSONArray("ranges");
HashMap<String,String> price = new HashMap<>();
for(int j=0; j<prices.length(); j++){
JSONObject ob= prices.getJSONObject(j);
price.put(ob.getString("from"),ob.getString("price"));
}
items.add(new SearchModel(name,image,quantity,name,price));
}
} catch (Exception e) {
Toast.makeText(SearchActivity.this, e.toString(), Toast.LENGTH_LONG).show();
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.i(TAG, "Error :" + error.toString());
simpleProgressBar.setVisibility(View.GONE);
}
});
mRequestQueue.add(mStringRequest);
simpleProgressBar.setVisibility(View.VISIBLE);
}
private void fechData() {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
for (int i = 0; i < 5; i++) {
items.add(new SearchModel(name, image, mf_pnum, availability));
adapter.notifyDataSetChanged();
}
}
}, 5000);
}
} `
, и это мой адаптер
publi c класс SearchItemAdapter расширяет RecyclerView.Adapter {
ArrayList<SearchModel> items;
public SearchItemAdapter(ArrayList<SearchModel> items) {
this.items = items;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View view = inflater.inflate(R.layout.search_item,parent,false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
SearchModel item = items.get(position);
holder.txt_name.setText(item.getName());
holder.manufacture_number.setText(item.getManufacture_no());
holder.txt_avail.setText(item.getAvailability());
/*
HashMap<String ,String> price = item.getPrice();
for(Map.Entry<String, String> entry : price.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
holder.txt_price.setText(holder.txt_price.getText().toString()+"\n"+key+" "+value);
// do what you have to do here
// In your case, another loop.
}
* / Picasso.get (). Load (item.getImage_url ()). Into (holder.img);
}
@Override
public int getItemCount() {
return items.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
TextView txt_name,manufacture_number,txt_avail;//txt_price
ImageView img;
public ViewHolder(@NonNull View itemView) {
super(itemView);
txt_name = itemView.findViewById(R.id.txt_name);
txt_avail = itemView.findViewById(R.id.txt_avail);
manufacture_number = itemView.findViewById(R.id.manufacture_number);
//txt_price = itemView.findViewById(R.id.txt_price);
img = itemView.findViewById(R.id.img);
}
}
}