Java Android:保存ListView项目并加载/添加更多内容
当我滚动到底部并将它们添加到当前项目时,我试图在我的ListView中加载更多的项目。它工作得很好,但最近我发现它再次加载所有对象,只是加载了更多的项。我正在使用Parse.com。我发现Parse.com提供了自己的自定义ParseQueryAdapter,其中包含getNextPageView()方法。它只在用户单击下面的按钮时加载移动项目。我还尝试了Java Android:保存ListView项目并加载/添加更多内容,java,android,listview,parse-platform,onscroll,Java,Android,Listview,Parse Platform,Onscroll,当我滚动到底部并将它们添加到当前项目时,我试图在我的ListView中加载更多的项目。它工作得很好,但最近我发现它再次加载所有对象,只是加载了更多的项。我正在使用Parse.com。我发现Parse.com提供了自己的自定义ParseQueryAdapter,其中包含getNextPageView()方法。它只在用户单击下面的按钮时加载移动项目。我还尝试了.setSkip(someNumber)方法,但它只删除/隐藏顶部的someNumber。因此,我仍然希望使用OnScrollListener
.setSkip(someNumber)
方法,但它只删除/隐藏顶部的someNumber
。因此,我仍然希望使用OnScrollListener
,并真正加载更多内容,而不是再次加载更多内容
你知道怎么做吗
检查我的代码:
public void updateData() {
mListView = (ListView)getView().findViewById(R.id.animal_list);
final ParseQuery<Animal> query = ParseQuery.getQuery(Animal.class);
query.setCachePolicy(CachePolicy.NETWORK_ONLY);
query.orderByAscending("animal");
query.setLimit(mListView.getCount() + 5);
query.findInBackground(new FindCallback<Animal>() {
@Override
public void done(List<Animal> animals, ParseException error) {
if(animals != null){
mAdapter.clear();
mProgressBar = (ProgressBar) getView().findViewById (R.id.loading_animals);
mProgressBar.setVisibility(View.INVISIBLE);
RelativeLayout footie = (RelativeLayout) getView().findViewById(R.id.footerview);
footie.setVisibility(View.VISIBLE);
for (int i = 0; i < animals.size(); i++) {
mAdapter.add(animals.get(i));
ArrayList<Animal> animal = new ArrayList<Animal>();
animal.add(animals.get(i));
}
}
}
}); }
private class RemoteDataTask extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute(); }
@Override
protected Void doInBackground(Void... params) {
return null;
}
@Override
protected void onPostExecute(Void result) {
mListView = (ListView) getView().findViewById(R.id.animal_list);
mEditText = (EditText) getView().findViewById(R.id.search_animal);
mAdapter = new AnimalAdapter(getActivity(), new ArrayList<Animal>());
mListView.setVisibility(View.VISIBLE);
mListView.setTextFilterEnabled(true);
mListView.setAdapter(mAdapter);
mListView.setOnScrollListener(new OnScrollListener() {
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount,
int totalItemCount) {
final int lastItem = firstVisibleItem + visibleItemCount;
if(lastItem == totalItemCount) {
if (mListView.getCount() > 20) {
RelativeLayout footie = (RelativeLayout) getView().findViewById(R.id.footerview);
mListView.removeFooterView(footie);
}
else{
updateData();
}
}
}
}
public void updateData(){
mListView=(ListView)getView().findViewById(R.id.animal_列表);
final ParseQuery=ParseQuery.getQuery(Animal.class);
query.setCachePolicy(仅限于CachePolicy.NETWORK_);
查询:orderByAscending(“动物”);
query.setLimit(mListView.getCount()+5);
findInBackground(新的FindCallback(){
@凌驾
公共作废完成(列出动物,ParseException错误){
如果(动物!=null){
mAdapter.clear();
mProgressBar=(ProgressBar)getView().findViewById(R.id.loading_动物);
mProgressBar.setVisibility(视图.不可见);
RelativeLayout footie=(RelativeLayout)getView().findViewById(R.id.footerview);
footie.setVisibility(视图可见);
对于(int i=0;i20){
RelativeLayout footie=(RelativeLayout)getView().findViewById(R.id.footerview);
mListView.removeFooterView(footie);
}
否则{
更新数据();
}
}
}
}
提前感谢在将适配器设置为
列表视图之前,请尝试清除适配器
,如下所示:
public void updateData() {
mListView = (ListView)getView().findViewById(R.id.animal_list);
final ParseQuery<Animal> query = ParseQuery.getQuery(Animal.class);
query.setCachePolicy(CachePolicy.NETWORK_ONLY);
query.orderByAscending("animal");
query.setLimit(mListView.getCount() + 5);
query.findInBackground(new FindCallback<Animal>() {
@Override
public void done(List<Animal> animals, ParseException error) {
if(animals != null){
mAdapter.clear();
mProgressBar = (ProgressBar) getView().findViewById (R.id.loading_animals);
mProgressBar.setVisibility(View.INVISIBLE);
RelativeLayout footie = (RelativeLayout) getView().findViewById(R.id.footerview);
footie.setVisibility(View.VISIBLE);
mAdapter.clear();///////HERE
for (int i = 0; i < animals.size(); i++) {
mAdapter.add(animals.get(i));
ArrayList<Animal> animal = new ArrayList<Animal>();
animal.add(animals.get(i));
}
}
}
}); }
private class RemoteDataTask extends AsyncTask<Void, Void, Void> {
@Override
protected void onPreExecute() {
super.onPreExecute(); }
@Override
protected Void doInBackground(Void... params) {
return null;
}
@Override
protected void onPostExecute(Void result) {
mListView = (ListView) getView().findViewById(R.id.animal_list);
mEditText = (EditText) getView().findViewById(R.id.search_animal);
mAdapter = new AnimalAdapter(getActivity(), new ArrayList<Animal>());
mListView.setVisibility(View.VISIBLE);
mListView.setTextFilterEnabled(true);
mListView.setAdapter(mAdapter);
mListView.setOnScrollListener(new OnScrollListener() {
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount,
int totalItemCount) {
final int lastItem = firstVisibleItem + visibleItemCount;
if(lastItem == totalItemCount) {
if (mListView.getCount() > 20) {
RelativeLayout footie = (RelativeLayout) getView().findViewById(R.id.footerview);
mListView.removeFooterView(footie);
}
else{
updateData();
}
}
}
}
public void updateData(){
mListView=(ListView)getView().findViewById(R.id.animal_列表);
final ParseQuery=ParseQuery.getQuery(Animal.class);
query.setCachePolicy(仅限于CachePolicy.NETWORK_);
查询:orderByAscending(“动物”);
query.setLimit(mListView.getCount()+5);
findInBackground(新的FindCallback(){
@凌驾
公共作废完成(列出动物,ParseException错误){
如果(动物!=null){
mAdapter.clear();
mProgressBar=(ProgressBar)getView().findViewById(R.id.loading_动物);
mProgressBar.setVisibility(视图.不可见);
RelativeLayout footie=(RelativeLayout)getView().findViewById(R.id.footerview);
footie.setVisibility(视图可见);
mAdapter.clear();//此处
对于(int i=0;i20){