Je veux développer une application Android pour un site Web. Je lis les messages du site Web de json
et montre son dans RecyclerView
tous les 10 messages et lorsque l'utilisateur de défilement sur RecyclerView afficher plus de 10 messages et aller à la fin! Je suis amateur et j'écris ci-dessous codes, mais je ne sais pas pour lire plus de données lors du défilement pour mettre fin et montrer mes données! (Je veux montrer n'importe quel 10 messages dans toutes les pages). lien API: API_LINKComment charger plus quand j'utilise RecyclerView et Retrofit?
public NewAdapter(List<Doc> docs, int rowLayout, Context context) {
this.docs = docs;
this.rowLayout = rowLayout;
this.context = context;
}
@Override
public NewViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
v = LayoutInflater.from(parent.getContext()).inflate(rowLayout, parent, false);
return new NewViewHolder(v);
}
@Override
public void onBindViewHolder(final NewViewHolder holder, final int position) {
doc = docs.get(position);
holder.tvTitle.setText(doc.getHeadline().getMain());
holder.tvDate.setText(doc.getPubDate());
holder.tvDescription.setText(doc.getSnippet());
if (docs.get(position).getMultimedia().size() > 0) {
Glide.with(context).load(url + doc.getMultimedia().get(0).getUrl())
.thumbnail(0.5f)
.placeholder(R.drawable.ic_close_black_24dp)
.diskCacheStrategy(DiskCacheStrategy.ALL)
.error(R.drawable.ic_close_black_24dp)
.into(holder.ivPoster);
}
holder.newLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context, WebViewActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("web_url", docs.get(position).getWebUrl());
context.startActivity(intent);
}
});
}
@Override
public int getItemCount() {
return docs == null ? 0 : docs.size();
}
public class NewViewHolder extends RecyclerView.ViewHolder {
LinearLayout newLayout;
TextView tvTitle;
TextView tvDescription;
TextView tvDate;
ImageView ivPoster;
public NewViewHolder(View itemView) {
super(itemView);
newLayout = (LinearLayout) itemView.findViewById(R.id.new_layout);
tvDate = (TextView) itemView.findViewById(R.id.tvDate);
tvTitle = (TextView) itemView.findViewById(R.id.tvTitle);
tvDescription = (TextView) itemView.findViewById(R.id.tvDescription);
ivPoster = (ImageView) itemView.findViewById(R.id.ivPoster);
}
}
MainActivity
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
newDocs = (List<Doc>) getIntent().getSerializableExtra("Doc");
change = getIntent().getBooleanExtra("change", false);
init();
setToolbar();
setContent();
//Xét điều kiện thay đổi
if (change) {
if (newDocs.size() > 0) {
Toast.makeText(MainActivity.this, "Data", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, "Empty", Toast.LENGTH_SHORT).show();
}
setRecycleView(newDocs);
}
getData();
}
@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
private void setToolbar() {
setSupportActionBar(toolbar);
}
//Function xác nhận dữ liệu trả về id
private void init() {
toolbar = (Toolbar) findViewById(R.id.toolbar);
mRecyclerView = (RecyclerView) findViewById(R.id.new_recycler_view);
refreshLayout = (SwipeRefreshLayout) findViewById(R.id.srlMain);
drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
navigationView = (NavigationView) findViewById(R.id.nav_view);
}
private void setContent() {
toggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();
navigationView.setNavigationItemSelectedListener(this);
refreshLayout.setOnRefreshListener(this);
//Set Recyclerview
mRecyclerView.setNestedScrollingEnabled(false);
final LinearLayoutManager mLayoutManager;
mLayoutManager = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(mLayoutManager);
mRecyclerView.setLayoutManager(new GridLayoutManager(this, 3));
}
//Function lấy dữ liệu RecyclerView
private void setRecycleView(List<Doc> list) {
newAdapter = new NewAdapter(list, R.layout.new_listitems, MainActivity.this);
newAdapter.notifyDataSetChanged();
mRecyclerView.setAdapter(newAdapter);
}
//Function nhận dữ liệu
private void getData() {
APIinterface apiSevice = APIClient.getClient().create(APIinterface.class);
Call<Resonpe> call = apiSevice.getHotNew(API_KEY);
call.enqueue(new Callback<Resonpe>() {
@Override
public void onResponse(Call<Resonpe> call, Response<Resonpe> response) {
if (response.isSuccessful()) {
docs = response.body().getNewResponse().getDocs();
if (!change) {
setRecycleView(docs);
}
} else {
Toast.makeText(MainActivity.this, "Error", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Call<Resonpe> call, Throwable t) {
Toast.makeText(MainActivity.this, "Internet is not connected", Toast.LENGTH_SHORT).show();
}
});
}
//Function tạo phần OptionMenu
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
MenuItem searchItem = menu.findItem(R.id.action_search);
final SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
return super.onCreateOptionsMenu(menu);
}
//Function xử lý sự kiên click items của Option
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onRefresh() {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
refreshLayout.setRefreshing(false);
if (change) {
setRecycleView(newDocs);
} else {
setRecycleView(docs);
}
}
}, 2500);
}
// Function xử lý sự kiên click items của NavigationView
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
newDocs = new ArrayList<>();
// Handle navigation view item clicks here.
int id = item.getItemId();
if (id == R.id.nav_camera) {
for (Doc doc : docs) {
if (doc.getNewDesk().equals("Sport")) {
newDocs.add(doc);
}
}
} else if (id == R.id.nav_gallery) {
for (Doc doc : docs) {
if (doc.getNewDesk().equals("Fashion")) {
newDocs.add(doc);
}
}
} else if (id == R.id.nav_slideshow) {
for (Doc doc : docs) {
if (doc.getNewDesk().equals("Arts")) {
newDocs.add(doc);
}
}
} else if (id == R.id.nav_manage) {
for (Doc doc : docs) {
if (doc.getNewDesk().equals("None")) {
newDocs.add(doc);
}
}
}
Intent intent = new Intent(this, MainActivity.class);
intent.putExtra("Doc", (Serializable) newDocs);
intent.putExtra("change", true);
startActivity(intent);
finish();
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
Ce que vous voulez est [RecyclerView Paginiation] (https://github.com/MarkoMilos/Paginate). – Abbas
@Abbas le lien que vous fournissez ne vérifie pas à nouveau –
@NileshRathod corrigé. – Abbas