Ich versuche, Endless Recycler View mit meiner Json Response zu implementieren.So laden Sie Json in Endless Recycler Veiw mit Nachrüstung
Dies ist mein Json Antwort Link
ich generieren meine Modelle mit jsonschema2pojo.org und ich laden die Daten in meinem recyclerview erfolgreich.
Aber ich muss endlos Recycler Ansicht implementieren:
Das ist mein RecyclerAdapter:
public class AparatAdapter extends RecyclerView.Adapter<AparatAdapter.ViewHolder> {
private Context context;
private ArrayList<Categoryvideo> categoryVideos;
//=============================constructor
public AparatAdapter(Context context, ArrayList<Categoryvideo> categoryVideos) {
this.context = context;
this.categoryVideos = categoryVideos;
}
//=============================viewholder
public class ViewHolder extends RecyclerView.ViewHolder{
private TextView txtTitle ,txtCount ,txtSender ,txtDate;
private ImageView imgRow;
public ViewHolder(View itemView) {
super(itemView);
txtTitle = (TextView)itemView.findViewById(R.id.txt_title_row);
txtCount = (TextView)itemView.findViewById(R.id.txt_count_dynamic_row);
txtSender = (TextView)itemView.findViewById(R.id.txt_sender_dynamic_row);
txtDate = (TextView)itemView.findViewById(R.id.txt_date_dynamic_row);
imgRow = (ImageView)itemView.findViewById(R.id.img_row);
}
}
//================================oncreateviewholder
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_layout, parent,false);
return new ViewHolder(view);
}
//================================= onbindviewholder
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.txtTitle.setText(categoryVideos.get(position).getTitle());
holder.txtCount.setText(categoryVideos.get(position).getVisitCnt().toString());
holder.txtSender.setText(categoryVideos.get(position).getSenderName());
holder.txtDate.setText(categoryVideos.get(position).getSdate().toString());
Glide.with(holder.itemView.getContext()).load(categoryVideos.get(position).getSmallPoster())
.into(holder.imgRow);
}
//==================================getitemcount
@Override
public int getItemCount() {
return categoryVideos.size();
}
}
und das ist die Tätigkeit, bei der ich die json mit Retrofit, dass laden:
public class SargarmiActivity extends AppCompatActivity {
private RecyclerView recyclerView;
private AparatAdapter adapter;
private LinearLayoutManager layoutManager;
private ArrayList<Categoryvideo> categoryvideos;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sargarmi);
initViews();
}
//=================================================
private void initViews() {
recyclerView = (RecyclerView) findViewById(R.id.recycler_sargarmi);
recyclerView.setHasFixedSize(true);
layoutManager = new LinearLayoutManager(SargarmiActivity.this);
recyclerView.setLayoutManager(layoutManager);
sendRequest();
}
//=================================================
private void sendRequest() {
recyclerView.addOnScrollListener(new EndlessRecyclerViewScrollListener(layoutManager) {
@Override
public void onLoadMore(int page, int totalItemsCount) {
loadMore();
}
});
getData();
}
//=======================================================
private void getData() {
//1
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://www.aparat.com/etc/api/")
.addConverterFactory(GsonConverterFactory.create())
.build();
//2
ApiInterface request = retrofit.create(ApiInterface.class);
//3
Call<JSONResponse> call = request.getJsonResponse();
//4
call.enqueue(new Callback<JSONResponse>() {
@Override
public void onResponse(Call<JSONResponse> call, Response<JSONResponse> response) {
if (response.isSuccessful()) {
JSONResponse jsonResponse = response.body();
categoryvideos = new ArrayList<>(jsonResponse.getCategoryvideos());
adapter = new AparatAdapter(SargarmiActivity.this, categoryvideos);
recyclerView.setAdapter(adapter);
} else {
Toast.makeText(SargarmiActivity.this, "Error darim else onresponse", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Call<JSONResponse> call, Throwable t) {
Toast.makeText(SargarmiActivity.this, "Error darim onFailure()", Toast.LENGTH_SHORT).show();
}
});
}
//=============== Load more Endless =====================
private void loadMore() {
}
}
Wie Sie in json sehen können, meine Paginierung URL in ui Objekt eingebettet. und ich weiß nicht, was ich in die loadmore() Methode in meiner Tätigkeit schreiben sollte.