0

我想爲一個網站開發android應用程序。我從json閱讀網站帖子,並在每10個帖子的RecyclerView中顯示它,當用戶在RecyclerView上滾動顯示更多10帖子並結束時! 我是業餘愛好者,我寫下面的代碼,,但我不知道滾動以結束並顯示我的數據時讀取更多的數據! (我想在任何頁面顯示任何10個職位)。 API鏈接:API_LINK如何在使用RecyclerView和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; 
} 
+1

你想要的是[RecyclerView Paginiation(https://github.com/MarkoMilos/Paginate)。 – Abbas

+0

@Abbas你提供的鏈接不是再次檢查 –

+0

@NileshRathod更正。 – Abbas

回答

相關問題