Android 当我使用RecyclerView和改装时,如何加载更多?

Android 当我使用RecyclerView和改装时,如何加载更多?,android,android-recyclerview,retrofit,infinite-scroll,endlessscroll,Android,Android Recyclerview,Retrofit,Infinite Scroll,Endlessscroll,我想为一个网站开发android应用程序。我从json阅读网站帖子,每10篇帖子在RecyclerView中显示一次,当用户在RecyclerView上滚动时,会显示更多的10篇帖子并进入结尾! 我是一名业余爱好者,我写了下面的代码,但我不知道在滚动到结尾并展示我的数据时要阅读更多的数据!(我想在任何页面中显示任何10篇帖子)。 API链接: publicNewAdapter(列表文档、int行布局、上下文){ this.docs=docs; this.rowLayout=rowLayout;

我想为一个网站开发android应用程序。我从
json
阅读网站帖子,每10篇帖子在
RecyclerView
中显示一次,当用户在RecyclerView上滚动时,会显示更多的10篇帖子并进入结尾! 我是一名业余爱好者,我写了下面的代码,但我不知道在滚动到结尾并展示我的数据时要阅读更多的数据!(我想在任何页面中显示任何10篇帖子)。 API链接:

publicNewAdapter(列表文档、int行布局、上下文){
this.docs=docs;
this.rowLayout=rowLayout;
this.context=上下文;
}
@凌驾
public NewViewHolder onCreateViewHolder(视图组父级,int-viewType){
v=LayoutInflater.from(parent.getContext()).flate(rowLayout,parent,false);
返回新的视图持有者(v);
}
@凌驾
public void onBindViewHolder(最终的NewViewHolder,最终的int位置){
doc=docs.get(位置);
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())
.缩略图(0.5f)
.占位符(R.drawable.ic\U close\U black\U 24dp)
.diskCacheStrategy(diskCacheStrategy.ALL)
.错误(R.drawable.ic\U close\U black\U 24dp)
.插入(支架、海报);
}
holder.newLayout.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
意向意向=新意向(上下文,WebViewActivity.class);
intent.addFlags(intent.FLAG\u活动\u新任务);
intent.putExtra(“web_url”,docs.get(position.getWebUrl());
背景。开始触觉(意图);
}
});
}
@凌驾
public int getItemCount(){
返回单据==null?0:docs.size();
}
公共类NewViewHolder扩展了RecyclerView.ViewHolder{
线性布局新布局;
文本视图标题;
文本视图描述;
文本视图日期;
ImageView海报;
公共新视图持有者(视图项视图){
超级(项目视图);
newLayout=(LinearLayout)itemView.findViewById(R.id.new_布局);
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);
}
}
主要活动

创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
newDocs=(List)getIntent().getSerializableExtra(“Doc”);
change=getIntent().getBooleanExtra(“change”,false);
init();
setToolbar();
setContent();
//Xétđiề吴琪ện thayđổ我
如果(更改){
如果(newDocs.size()>0){
Toast.makeText(MainActivity.this,“Data”,Toast.LENGTH_SHORT.show();
}否则{
Toast.makeText(MainActivity.this,“空”,Toast.LENGTH_SHORT.show();
}
setRecycleView(新文档);
}
getData();
}
@凌驾
public void onBackPressed(){
抽屉布局抽屉=(抽屉布局)findViewById(R.id.抽屉布局);
if(抽屉isDrawerOpen(重力压缩机启动)){
抽屉。关闭抽屉(重力压缩机启动);
}否则{
super.onBackPressed();
}
}
私有void setToolbar(){
设置支持操作栏(工具栏);
}
//函数xác nhận dữ 锂ệu trả về 身份证件
私有void init(){
toolbar=(toolbar)findviewbyd(R.id.toolbar);
mRecyclerView=(RecyclerView)findViewById(R.id.new\u recycler\u视图);
refreshLayout=(SwipeRefreshLayout)findViewById(R.id.srlMain);
抽屉=(抽屉布局)findViewById(R.id.抽屉布局);
navigationView=(navigationView)findViewById(R.id.nav_视图);
}
私有void setContent(){
toggle=newactionBarDrawerToggle(这个,抽屉,工具栏,R.string.navigation\u drawer\u open,R.string.navigation\u drawer\u close);
抽屉。设置抽屉定位器(开关);
toggle.syncState();
navigationView.setNavigationItemSelectedListener(此);
refreshLayout.setOnRefreshListener(此);
//设置回收视图
mRecyclerView.setNestedScrollingEnabled(false);
最终直线布局经理mLayoutManager;
mLayoutManager=新的LinearLayoutManager(此);
mRecyclerView.setLayoutManager(mllayoutmanager);
setLayoutManager(新的GridLayoutManager(this,3));
}
//函数lấy-dữ 锂ệu回收视图
私有void setRecycleView(列表){
newAdapter=newnewadapter(list,R.layout.new_listitems,MainActivity.this);
newAdapter.notifyDataSetChanged();
mRecyclerView.setAdapter(newAdapter);
}
//函数nhận dữ 锂ệU
私有void getData(){
APIinterface apiSevice=APIClient.getClient().create(APIinterface.class);
Call Call=apiSevice.getHotNew(API_键);
call.enqueue(新回调(){
@凌驾
公共void onResponse(调用、响应){
if(response.issusccessful()){
docs=response.body().getNewResponse().getDocs();
如果(!更改){
setRecycleView(文档);
}
}否则{
Toast.makeText(MainActivity.this,“Error”,Toast.LENGTH_SHORT.show();
}
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
Toast.makeText(MainActivity.this,“Internet未连接”,Toast.LENGTH_SHORT.show();
}
});
}
//函数tạo博士ần选项菜单
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
MenuInflater充气机=getMenuInflater();
充气机。充气(右菜单。主菜单,菜单);
MenuItem searchItem=menu.findItem(R.id
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);
    }
}
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;
}