在getItemCount中实现Load More功能,可以吗?

问题描述 投票:0回答:1

我有一个适配器,并有下面这段代码,我的目标是用gridlayoutmanager实现一些Load More功能,并从我的API URL中获取数据。我的问题是,我可以在getItemCount方法上使用类似if else条件之类的东西吗?如果可以,我如何在我的代码上实现它?谢谢,我有一个适配器,有这样的代码。

@Override
    public int getItemCount() {
        return (eventList==null)?0:eventList.size();       
    }
android gridlayoutmanager
1个回答
0
投票

下面是一个为RecyclerView定制适配器的例子。


public class CustomAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

    private Context context;
    private LayoutInflater inflater;
    private ArrayList<Object> customRows = new ArrayList<Object>();
    private AdapterActionListener adapterActionListener;

    public CustomAdapter(Context context, ArrayList<Object> customRows)
    {
        this.context = context;
        this.customRows.addAll(customRows);
        inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }


    public void refill(ArrayList<Object> customRows)
    {
        this.customRows.clear();
        this.customRows.addAll(customRows);
        this.notifyDataSetChanged();
    }


    @Override
    public int getItemViewType(int position) {
        return Utility.ADAPTER_VIEWTYPE_DEFAULT;
    }

    @Override
    public long getItemId(int index) {
        return index + 1;
    }

    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        // ... custom implementation
        return view;
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, int position) {
        // ... custom implementation
    }

    @Override
    public int getItemCount() {
        return customRows.size();
    }

}

如果你在片段活动中加载更多的数据,你需要调用

adapter.refill(data);
© www.soinside.com 2019 - 2024. All rights reserved.