Добавлен пример бесконечного списка для почты

This commit is contained in:
Victor 2013-08-29 16:27:28 +03:00
parent 9efd7f8d86
commit 3a419f0c3b
2 changed files with 76 additions and 0 deletions

View File

@ -15,6 +15,7 @@ import com.annimon.client.adapters.ActionsAdapter;
import com.annimon.client.entities.Action; import com.annimon.client.entities.Action;
import com.annimon.client.fragments.DiaryFragment; import com.annimon.client.fragments.DiaryFragment;
import com.annimon.client.fragments.ForumFragment; import com.annimon.client.fragments.ForumFragment;
import com.annimon.client.fragments.MailFragment;
import net.simonvt.menudrawer.MenuDrawer; import net.simonvt.menudrawer.MenuDrawer;
import net.simonvt.menudrawer.Position; import net.simonvt.menudrawer.Position;
@ -79,6 +80,8 @@ public class MainActivity extends Activity {
fragment = new ForumFragment(); fragment = new ForumFragment();
} else if ("diary".equals(path)) { } else if ("diary".equals(path)) {
fragment = new DiaryFragment(); fragment = new DiaryFragment();
} else if ("mail".equals(path)) {
fragment = new MailFragment();
} }
if (fragment == null) return; if (fragment == null) return;

View File

@ -0,0 +1,73 @@
package com.annimon.client.fragments;
import android.app.ListFragment;
import android.os.Bundle;
import android.widget.AbsListView;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import java.util.ArrayList;
public class MailFragment extends ListFragment {
private int itemsPerPage = 10;
private boolean loadingMore = false;
private ArrayList<String> items;
private ArrayAdapter<String> adapter;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
items = new ArrayList<String>();
adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, items);
// FooterView для показа информации о подгрузке данных
TextView footerView = new TextView(getActivity());
footerView.setText("Loading...");
getListView().addFooterView(footerView);
setListAdapter(adapter);
getListView().setOnScrollListener(new AbsListView.OnScrollListener(){
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
int lastInScreen = firstVisibleItem + visibleItemCount;
if((lastInScreen == totalItemCount) && !(loadingMore)){
Thread thread = new Thread(loadMoreListItems);
thread.start();
}
}
});
Thread thread = new Thread(loadMoreListItems);
thread.start();
}
private Runnable loadMoreListItems = new Runnable() {
@Override
public void run() {
loadingMore = true;
items = new ArrayList<String>();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {}
for (int i = 0; i < itemsPerPage; i++) {
items.add(String.valueOf(System.currentTimeMillis()));
}
getActivity().runOnUiThread(returnRes);
}
};
private Runnable returnRes = new Runnable() {
@Override
public void run() {
if(items != null && items.size() > 0){
adapter.addAll(items);
}
adapter.notifyDataSetChanged();
loadingMore = false;
}
};
}