【发布时间】:2017-11-22 07:50:32
【问题描述】:
我知道标题看起来很奇怪,但基本上我想要的是将分页应用到我的列表并使用 url api 端点作为参数来控制它。!
例如,端点看起来像这样 > www.someapi.com/josn/list?pageIndex=1
它会给出一个包含 10 个项目的数组的响应,如果我想要更多,我必须将参数的索引更改为 2 等等。!
回复
{
"Succeeded": true,
"AvailableChallenge": true,
"DebugError": "",
"NextPage": 2,
"AllPages": 2,
"Challenges": [
{
"ID": 114,
"Title": "Amet sit id ratione dolorem numquam"
},
{
"ID": 114,
"Title": "Amet sit id ratione dolorem numquam"
}
...
..
.
]
}
我绑定了所有内容,但无法正确完成,我尝试了 here 中的大多数解决方案,但没有运气。 我也尝试过使用这两个库 Paginate 和 recyclerview-paginated 甚至这个 SuperRecyclerView。但它没有用。!
任何有关控制这一点的最佳逻辑的帮助都会有很大帮助。
public class ChallengesListFragment extends BaseFragment {
private int pageNumber = 1;
private SuperRecyclerView recyclerview;
private ArrayList<ChallengeActive> data;
private ChallengesAdapter adapter;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_challenges_list, container, false);
initView(rootView);
initRecycler();
getData(1);
return rootView;
}
private void initRecycler() {
data = new ArrayList<>();
final RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getActivity());
recyclerview.setLayoutManager(mLayoutManager);
adapter = new ChallengesAdapter(data, getActivity(), this);
recyclerview.setAdapter(adapter);
recyclerview.setupMoreListener(new OnMoreListener() {
@Override
public void onMoreAsked(int overallItemsCount, int itemsBeforeMore, int maxLastVisiblePosition) {
pageNumber++;
getData(maxLastVisiblePosition);
}
}, 10);
recyclerview.setRefreshListener(new OnRefreshListener() {
@Override
public void onRefresh() {
pageNumber = 1;
getData(pageNumber);
}
});
}
private void getData(final int pageNumber) {
WebRequests.GetActiveChallenges(pageNumber, new onResult() {
@Override
public void onSuccess(Object object) {
ArrayList<ChallengeActive> list = (ArrayList<ChallengeActive>) object;
data.clear();
data.addAll(list);
adapter.notifyDataSetChanged();
}
@Override
public void onFail(Object object) {
Toast.makeText(getActivity(), "Something went wrong, try again later",
Toast.LENGTH_SHORT).show();
}
});
}
}
【问题讨论】:
-
添加您的代码..
-
我尝试了很多方法...我会发布一些。
-
问题:来自服务器的下一个分页答案的数据列表,您想将它添加到现有的列表中还是替换它?
-
您能否添加一个 API 响应示例?您是否对该 API 拥有任何所有权,以便在需要时更改响应模型?
-
@IonutJ.Bejan 好吧,我认为添加它更好的用户体验。因为无论如何所有项目都不会太大。
标签: java android rest android-recyclerview pagination