Как я могу добиться загрузки 20 элементов с сервера в просмотрщик с помощью индикатора загрузки большего числа в конце первых 20 элементов и получения следующих 20 элементов и следующих 20 элементов и т. Д. До последних 20 элементов. Я изучил большое количество существующих учебных пособий / кодов, но ни один из них не соответствует моему нынешнему коду без больших изменений. Будет приветствоваться руководство, начиная с mysql запроса к переработчику и заканчивая получением следующих 20, затем 20 или любого числа и далее до тех пор, пока список не закончится.
MYSQL QUERY
$sql="SELECT * FROM `animals`";
$result=mysqli_query($con,$sql);
$data=array();
while($row=mysqli_fetch_assoc($result)){
$data[]=$row;
}
header('Content-Type:Application/json');
echo json_encode($data);
JSON OUTPUT
[{"id":"1","image1URL":".....","image2URL":".....",},
{"id":"2","image1URL":".....","image2URL":".....",},
{"id":"3","image1URL":".....","image2URL":".....",},
{"id":"4","image1URL":".....","image2URL":".....",}]
RETROFIT INSTANCE
public static final String BASE_URL = "http://winteranimals.com/";
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
}return retrofit;
ИНТЕРФЕЙС API
public interface ApiInterface {
String BASE_URL = "http://winteranimals.com/";
@GET(animals.php);
Call<List<ImageList>> getData();
СКАЧАТЬ ДЕЯТЕЛЬНОСТЬ
public class DownloadActivity extends AppCompatActivity {
private List<ImageList> mList;
private ImageRecyclerAdapter adapter;
private RecyclerView mRecyclerView;
private GridLayoutManager layoutManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.download_activity );
mList = new ArrayList<>();
mRecyclerView = findViewById(R.id.main_recyclerview);
//get data from backend
ApiInterface apiInterface = RetrofitInstance.getRetrofitInstance().create(ApiInterface.class);
Call<List<ImageList>> call = apiInterface.geImgData();
call.enqueue(new Callback<List<ImageList>>() {
@Override
public void onResponse(Call<List<ImageList>> call, Response<List<ImageList>> response) {
mList = response.body();
layoutManager = new GridLayoutManager(DownloadActivity.this, 2);
mRecyclerView.setLayoutManager(layoutManager);
adapter = new ImageRecyclerAdapter(mList, DownloadActivity.this);
mRecyclerView.setHasFixedSize(true);
mRecyclerView.setItemViewCacheSize(20);
mRecyclerView.setAdapter(adapter);
adapter.notifyDataSetChanged();
progressDialog.dismiss();
}
RECYCLERADAPTER
public class ImageRecyclerAdapter extends RecyclerView.Adapter<ImageRecyclerAdapter.ViewHolder> {
private Context context;
private List<ImageList> mList;
public ImageRecyclerAdapter(List<ImageList> mList, Context context) {
this.mList=mList;
this.context=context;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.single_recycler_item,parent,false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull final ViewHolder holder, int position) {
ImageList imageList = mList.get(position);
.......
}
@Override
public int getItemCount() {
return mList.size();
}
public class ViewHolder extends RecyclerView.ViewHolder{
....
public ViewHolder(@NonNull View itemView) {
super(itemView);
..... {
@Override
public void onClick(View v) {